From e198af10b68e2819d98287c5531531975f6da0b3 Mon Sep 17 00:00:00 2001 From: Jernej Skrabec Date: Sun, 2 May 2021 10:47:46 +0200 Subject: [PATCH] linux (Allwinner): update patches for 5.13 --- packages/linux/package.mk | 4 - ...-plus-bananapi-m2-zero-Increase-BT-U.patch | 26 - ...2-plus-bananapi-m2-zero-Add-HDMI-out.patch | 51 - ...nanapi-m2-plus-Increase-BT-UART-spee.patch | 25 - .../0001-HACK-h6-Add-HDMI-sound-card.patch | 4 +- ...-Use-devm_regulator_get-for-PHY-regu.patch | 6 +- ...-Rename-PHY-regulator-variable-to-re.patch | 8 +- ...-Add-support-for-enabling-a-regulato.patch | 8 +- ...llwinner-orange-pi-3-Enable-ethernet.patch | 2 +- ...-dts-h6-enable-USB3-port-on-Pine-H64.patch | 2 +- ...nner-h6-Add-AC200-EPHY-related-nodes.patch | 2 +- ...usuable-eMMC-on-some-H6-boards-by-di.patch | 2 +- .../0012-pineh64-model-b-bluetooth-wip.patch | 45 - ...ner-h6-tanix-tx6-add-bt-enable-rtw88.patch | 11 +- projects/Allwinner/linux/linux.aarch64.conf | 328 ++++-- projects/Allwinner/linux/linux.arm.conf | 263 +++-- ...p20x-pek-allow-wakeup-after-shutdown.patch | 0 ...001-media-cedrus-Add-support-for-R40.patch | 40 - ...tected-clocks-for-all-OF-clock-prov.patch} | 4 +- ...r-allow-timeout-to-be-set-at-runtime.patch | 99 -- ...sun4i-i2s-Change-set_chan_cfg-params.patch | 118 --- ...m-Support-protected-clocks-property.patch} | 0 ...SoC-sun4i-i2s-Add-support-for-H6-I2S.patch | 295 ------ ...-dts-sunxi-h3-h5-Protect-SCP-clocks.patch} | 4 +- ...hange-get_sr-and-get_wss-to-be-more-.patch | 134 --- ...4-dts-allwinner-a64-Protect-SCP-clo.patch} | 4 +- ...SoC-sun4i-i2s-Set-sign-extend-sample.patch | 86 -- ...4-dts-allwinner-h6-Protect-SCP-cloc.patch} | 4 +- ...-sun4i-i2s-Add-20-and-24-bit-support.patch | 61 -- ...n6i-Allow-RTC-wakeup-after-shutdown.patch} | 10 +- ...oC-sun4i-i2s-Fix-sun8i-volatile-regs.patch | 49 - ...-sun4i-lradc-keys-Add-wakup-support.patch} | 0 ...-sun4i-i2s-Fix-setting-of-FIFO-modes.patch | 53 - ...-Support-unidirectional-mailbox-cha.patch} | 8 +- ...M-dts-sunxi-h3-h5-Add-SCPI-protocol.patch} | 2 +- ...ix-coding-style-for-callback-definit.patch | 44 - ...M-dts-sun8i-r40-Add-deinterlace-node.patch | 45 - ...dts-allwinner-a64-Add-SCPI-protocol.patch} | 0 ...ts-allwinner-h5-Add-deinterlace-node.patch | 38 - ...-dts-allwinner-h6-Add-SCPI-protocol.patch} | 2 +- ...C-hdmi-codec-fix-channel-allocation.patch} | 2 +- ...-drm-sun4i-csc-Rework-DE3-CSC-macros.patch | 40 - ...e2-de3-Remove-redundant-CSC-matrices.patch | 163 --- ...api-hevc-Add-scaling-matrix-control.patch} | 26 +- ...-sun4i-Add-support-for-BT2020-to-DE3.patch | 62 -- ...hevc-Add-support-for-scaling-matrix.patch} | 11 +- ...uapi-hevc-Add-segment-address-field.patch} | 0 ...sure-host-is-suspended-during-system.patch | 27 - ...arm64-dts-allwinner-h6-Add-I2S1-node.patch | 42 - ...evc-Add-support-for-multiple-slices.patch} | 2 +- ...rm64-dts-allwinner-a64-Add-I2S2-node.patch | 43 - ...> 0018-media-cedrus-hevc-tiles-hack.patch} | 6 +- ...19-arm-dts-sunxi-h3-h5-Add-I2S2-node.patch | 42 - ...rus-Add-callback-for-buffer-cleanup.patch} | 6 +- ...llwinner-h6-PineH64-model-B-Add-wifi.patch | 47 - ...drus-hevc-Improve-buffer-management.patch} | 4 +- ...drus-h264-Improve-buffer-management.patch} | 2 +- ...tch => 0022-WIp-10-bit-HEVC-support.patch} | 16 +- ...check-for-H264-and-HEVC-limitations.patch} | 38 +- ...IP-dw-hdmi-cec-sleep-100ms-on-error.patch} | 0 ...ment-plane-z-position-setting-logic.patch} | 36 +- ...se-update-regmap-variant-for-blend-.patch} | 0 ...drm-sun4i-mixer-Add-caching-support.patch} | 0 ...h => 0028-mfd-Add-support-for-AC200.patch} | 0 ...-net-phy-Add-support-for-AC200-EPHY.patch} | 0 ...ce.patch => 0030-wip-H6-deinterlace.patch} | 2 +- ...ch => 0031-arm64-dts-h6-deinterlace.patch} | 2 +- ...d-parenthesis-around-macro-argument.patch} | 0 ...patch => 0033-WIP-I2S-multi-channel.patch} | 8 +- ...-cedrus-Add-support-for-VP8-decoding.patch | 985 ------------------ ...0034-HACK-h3-h5-Add-HDMI-sound-card.patch} | 4 +- ...0035-h3-h5-power-key-wake-up-source.patch} | 43 +- ...5-cvbs.patch => 0036-wip-h3-h5-cvbs.patch} | 78 +- ...i-hevc-add-fields-needed-for-rkvdec.patch} | 2 - ...edia-uapi-hevc-tiles-and-num_slices.patch} | 2 - ...nor-data-with-pre-defined-thresholds.patch | 57 - ...-timer-as-default-in-devfreq-profile.patch | 24 - ...-governor-data-with-pre-defined-thre.patch | 59 -- ...-delayed-timer-as-default-in-devfreq.patch | 27 - ...c-sun8i-Return-void-from-PHY-unpower.patch | 34 - ...-sun8i-Remove-unnecessary-PHY-power-.patch | 29 - ...-dwmac-sun8i-Use-reset_control_reset.patch | 30 - ...c-sun8i-Minor-probe-function-cleanup.patch | 34 - ...-dwmac-sun8i-Add-a-shutdown-callback.patch | 41 - ...1-i2c-mv64xxx-Add-runtime-PM-support.patch | 237 ----- ...r-Skip-register-writes-during-remove.patch | 38 - ...unxi-cir-Remove-unnecessary-spinlock.patch | 69 -- ...r-Factor-out-hardware-initialization.patch | 223 ---- ...Implement-suspend-resume-shutdown-ca.patch | 60 -- ...sun6i-r-Use-a-stacked-irqchip-driver.patch | 437 -------- ...7-irqchip-sun6i-r-Add-wakeup-support.patch | 210 ---- ...-dts-sunxi-Rename-nmi_intc-to-r_intc.patch | 194 ---- ...dts-sunxi-Use-the-new-r_intc-binding.patch | 291 ------ ...-ARM-dts-sunxi-h3-h5-Add-r_intc-node.patch | 33 - ...i-Move-wakeup-capable-IRQs-to-r_intc.patch | 139 --- ...allwinner-Use-the-new-r_intc-binding.patch | 232 ----- ...ner-Move-wakeup-capable-IRQs-to-r_in.patch | 77 -- ...RM-dts-sunxi-a83t-Protect-SCP-clocks.patch | 28 - ...30-bus-sunxi-rsb-Move-OF-match-table.patch | 43 - ...lit-out-controller-init-exit-functio.patch | 210 ---- ...plement-suspend-resume-shutdown-call.patch | 81 -- ...b-Implement-runtime-power-management.patch | 129 --- 102 files changed, 559 insertions(+), 6135 deletions(-) delete mode 100644 projects/Allwinner/devices/H2-plus/patches/linux/0001-ARM-dts-sun8i-h2-plus-bananapi-m2-zero-Increase-BT-U.patch delete mode 100644 projects/Allwinner/devices/H2-plus/patches/linux/0002-ARM-dts-sunxi-h2-plus-bananapi-m2-zero-Add-HDMI-out.patch delete mode 100644 projects/Allwinner/devices/H3/patches/linux/0002-ARM-dts-sunxi-bananapi-m2-plus-Increase-BT-UART-spee.patch delete mode 100644 projects/Allwinner/devices/H6/patches/linux/0012-pineh64-model-b-bluetooth-wip.patch rename projects/Allwinner/patches/linux/{crust => }/0001-Input-axp20x-pek-allow-wakeup-after-shutdown.patch (100%) delete mode 100644 projects/Allwinner/patches/linux/0001-media-cedrus-Add-support-for-R40.patch rename projects/Allwinner/patches/linux/{crust/0024-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch => 0002-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch} (98%) delete mode 100644 projects/Allwinner/patches/linux/0002-media-sunxi-cir-allow-timeout-to-be-set-at-runtime.patch delete mode 100644 projects/Allwinner/patches/linux/0003-ASoC-sun4i-i2s-Change-set_chan_cfg-params.patch rename projects/Allwinner/patches/linux/{crust/0025-Revert-clk-qcom-Support-protected-clocks-property.patch => 0003-Revert-clk-qcom-Support-protected-clocks-property.patch} (100%) delete mode 100644 projects/Allwinner/patches/linux/0004-ASoC-sun4i-i2s-Add-support-for-H6-I2S.patch rename projects/Allwinner/patches/linux/{crust/0027-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch => 0004-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch} (95%) delete mode 100644 projects/Allwinner/patches/linux/0005-ASoC-sun4i-i2s-Change-get_sr-and-get_wss-to-be-more-.patch rename projects/Allwinner/patches/linux/{crust/0028-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch => 0005-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch} (95%) delete mode 100644 projects/Allwinner/patches/linux/0006-ASoC-sun4i-i2s-Set-sign-extend-sample.patch rename projects/Allwinner/patches/linux/{crust/0029-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch => 0006-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch} (95%) delete mode 100644 projects/Allwinner/patches/linux/0007-ASoC-sun4i-i2s-Add-20-and-24-bit-support.patch rename projects/Allwinner/patches/linux/{crust/0034-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch => 0007-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch} (84%) delete mode 100644 projects/Allwinner/patches/linux/0008-ASoC-sun4i-i2s-Fix-sun8i-volatile-regs.patch rename projects/Allwinner/patches/linux/{crust/0035-input-sun4i-lradc-keys-Add-wakup-support.patch => 0008-input-sun4i-lradc-keys-Add-wakup-support.patch} (100%) delete mode 100644 projects/Allwinner/patches/linux/0009-ASoC-sun4i-i2s-Fix-setting-of-FIFO-modes.patch rename projects/Allwinner/patches/linux/{crust/0036-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch => 0009-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch} (93%) rename projects/Allwinner/patches/linux/{crust/0037-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch => 0010-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch} (98%) delete mode 100644 projects/Allwinner/patches/linux/0010-ASoC-sun4i-i2s-fix-coding-style-for-callback-definit.patch delete mode 100644 projects/Allwinner/patches/linux/0011-ARM-dts-sun8i-r40-Add-deinterlace-node.patch rename projects/Allwinner/patches/linux/{crust/0038-arm64-dts-allwinner-a64-Add-SCPI-protocol.patch => 0011-arm64-dts-allwinner-a64-Add-SCPI-protocol.patch} (100%) delete mode 100644 projects/Allwinner/patches/linux/0012-arm64-dts-allwinner-h5-Add-deinterlace-node.patch rename projects/Allwinner/patches/linux/{crust/0039-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch => 0012-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch} (98%) rename projects/Allwinner/patches/linux/{0022-ASoC-hdmi-codec-fix-channel-allocation.patch => 0013-ASoC-hdmi-codec-fix-channel-allocation.patch} (98%) delete mode 100644 projects/Allwinner/patches/linux/0013-drm-sun4i-csc-Rework-DE3-CSC-macros.patch delete mode 100644 projects/Allwinner/patches/linux/0014-drm-sun4i-de2-de3-Remove-redundant-CSC-matrices.patch rename projects/Allwinner/patches/linux/{0023-media-uapi-hevc-Add-scaling-matrix-control.patch => 0014-media-uapi-hevc-Add-scaling-matrix-control.patch} (74%) delete mode 100644 projects/Allwinner/patches/linux/0015-drm-sun4i-Add-support-for-BT2020-to-DE3.patch rename projects/Allwinner/patches/linux/{0024-media-cedrus-hevc-Add-support-for-scaling-matrix.patch => 0015-media-cedrus-hevc-Add-support-for-scaling-matrix.patch} (96%) rename projects/Allwinner/patches/linux/{0025-media-uapi-hevc-Add-segment-address-field.patch => 0016-media-uapi-hevc-Add-segment-address-field.patch} (100%) delete mode 100644 projects/Allwinner/patches/linux/0016-mmc-sunxi-mmc-Ensure-host-is-suspended-during-system.patch delete mode 100644 projects/Allwinner/patches/linux/0017-arm64-dts-allwinner-h6-Add-I2S1-node.patch rename projects/Allwinner/patches/linux/{0026-media-cedrus-hevc-Add-support-for-multiple-slices.patch => 0017-media-cedrus-hevc-Add-support-for-multiple-slices.patch} (98%) delete mode 100644 projects/Allwinner/patches/linux/0018-arm64-dts-allwinner-a64-Add-I2S2-node.patch rename projects/Allwinner/patches/linux/{0027-media-cedrus-hevc-tiles-hack.patch => 0018-media-cedrus-hevc-tiles-hack.patch} (98%) delete mode 100644 projects/Allwinner/patches/linux/0019-arm-dts-sunxi-h3-h5-Add-I2S2-node.patch rename projects/Allwinner/patches/linux/{0028-media-cedrus-Add-callback-for-buffer-cleanup.patch => 0019-media-cedrus-Add-callback-for-buffer-cleanup.patch} (91%) delete mode 100644 projects/Allwinner/patches/linux/0020-arm64-dts-allwinner-h6-PineH64-model-B-Add-wifi.patch rename projects/Allwinner/patches/linux/{0029-media-cedrus-hevc-Improve-buffer-management.patch => 0020-media-cedrus-hevc-Improve-buffer-management.patch} (98%) rename projects/Allwinner/patches/linux/{0030-media-cedrus-h264-Improve-buffer-management.patch => 0021-media-cedrus-h264-Improve-buffer-management.patch} (99%) rename projects/Allwinner/patches/linux/{0031-WIp-10-bit-HEVC-support.patch => 0022-WIp-10-bit-HEVC-support.patch} (91%) rename projects/Allwinner/patches/linux/{0032-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch => 0023-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch} (77%) rename projects/Allwinner/patches/linux/{0034-WIP-dw-hdmi-cec-sleep-100ms-on-error.patch => 0024-WIP-dw-hdmi-cec-sleep-100ms-on-error.patch} (100%) rename projects/Allwinner/patches/linux/{0035-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch => 0025-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch} (89%) rename projects/Allwinner/patches/linux/{0036-drm-sun4i-Don-t-use-update-regmap-variant-for-blend-.patch => 0026-drm-sun4i-Don-t-use-update-regmap-variant-for-blend-.patch} (100%) rename projects/Allwinner/patches/linux/{0037-drm-sun4i-mixer-Add-caching-support.patch => 0027-drm-sun4i-mixer-Add-caching-support.patch} (100%) rename projects/Allwinner/patches/linux/{0038-mfd-Add-support-for-AC200.patch => 0028-mfd-Add-support-for-AC200.patch} (100%) rename projects/Allwinner/patches/linux/{0039-net-phy-Add-support-for-AC200-EPHY.patch => 0029-net-phy-Add-support-for-AC200-EPHY.patch} (100%) rename projects/Allwinner/patches/linux/{0040-wip-H6-deinterlace.patch => 0030-wip-H6-deinterlace.patch} (99%) rename projects/Allwinner/patches/linux/{0041-arm64-dts-h6-deinterlace.patch => 0031-arm64-dts-h6-deinterlace.patch} (97%) rename projects/Allwinner/patches/linux/{0042-ASoC-sun4i-i2s-Add-parenthesis-around-macro-argument.patch => 0032-ASoC-sun4i-i2s-Add-parenthesis-around-macro-argument.patch} (100%) rename projects/Allwinner/patches/linux/{0043-WIP-I2S-multi-channel.patch => 0033-WIP-I2S-multi-channel.patch} (97%) delete mode 100644 projects/Allwinner/patches/linux/0033-media-cedrus-Add-support-for-VP8-decoding.patch rename projects/Allwinner/patches/linux/{0044-HACK-h3-h5-Add-HDMI-sound-card.patch => 0034-HACK-h3-h5-Add-HDMI-sound-card.patch} (96%) rename projects/Allwinner/patches/linux/{0045-h3-h5-power-key-wake-up-source.patch => 0035-h3-h5-power-key-wake-up-source.patch} (55%) rename projects/Allwinner/patches/linux/{0055-wip-h3-h5-cvbs.patch => 0036-wip-h3-h5-cvbs.patch} (84%) rename projects/Allwinner/patches/linux/{0059-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch => 0038-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch} (95%) rename projects/Allwinner/patches/linux/{0060-HACK-media-uapi-hevc-tiles-and-num_slices.patch => 0039-HACK-media-uapi-hevc-tiles-and-num_slices.patch} (91%) delete mode 100644 projects/Allwinner/patches/linux/0046-drm-lima-add-governor-data-with-pre-defined-thresholds.patch delete mode 100644 projects/Allwinner/patches/linux/0047-drm-lima-Use-delayed-timer-as-default-in-devfreq-profile.patch delete mode 100644 projects/Allwinner/patches/linux/0048-drm-panfrost-Add-governor-data-with-pre-defined-thre.patch delete mode 100644 projects/Allwinner/patches/linux/0049-drm-panfrost-Use-delayed-timer-as-default-in-devfreq.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0006-net-stmmac-dwmac-sun8i-Return-void-from-PHY-unpower.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0007-net-stmmac-dwmac-sun8i-Remove-unnecessary-PHY-power-.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0008-net-stmmac-dwmac-sun8i-Use-reset_control_reset.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0009-net-stmmac-dwmac-sun8i-Minor-probe-function-cleanup.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0010-net-stmmac-dwmac-sun8i-Add-a-shutdown-callback.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0011-i2c-mv64xxx-Add-runtime-PM-support.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0012-media-sunxi-cir-Skip-register-writes-during-remove.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0013-media-sunxi-cir-Remove-unnecessary-spinlock.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0014-media-sunxi-cir-Factor-out-hardware-initialization.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0015-media-sunxi-cir-Implement-suspend-resume-shutdown-ca.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0016-irqchip-sun6i-r-Use-a-stacked-irqchip-driver.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0017-irqchip-sun6i-r-Add-wakeup-support.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0018-ARM-dts-sunxi-Rename-nmi_intc-to-r_intc.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0019-ARM-dts-sunxi-Use-the-new-r_intc-binding.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0020-ARM-dts-sunxi-h3-h5-Add-r_intc-node.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0021-ARM-dts-sunxi-Move-wakeup-capable-IRQs-to-r_intc.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0022-arm64-dts-allwinner-Use-the-new-r_intc-binding.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0023-arm64-dts-allwinner-Move-wakeup-capable-IRQs-to-r_in.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0026-DO-NOT-MERGE-ARM-dts-sunxi-a83t-Protect-SCP-clocks.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0030-bus-sunxi-rsb-Move-OF-match-table.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0031-bus-sunxi-rsb-Split-out-controller-init-exit-functio.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0032-bus-sunxi-rsb-Implement-suspend-resume-shutdown-call.patch delete mode 100644 projects/Allwinner/patches/linux/crust/0033-bus-sunxi-rsb-Implement-runtime-power-management.patch diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 30829f5333..60b1984a8f 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -37,10 +37,6 @@ esac PKG_KERNEL_CFG_FILE=$(kernel_config_path) || die -if listcontains "${UBOOT_FIRMWARE}" "crust"; then - PKG_PATCH_DIRS+=" crust" -fi - if [ -n "${KERNEL_TOOLCHAIN}" ]; then PKG_DEPENDS_HOST+=" gcc-arm-${KERNEL_TOOLCHAIN}:host" PKG_DEPENDS_TARGET+=" gcc-arm-${KERNEL_TOOLCHAIN}:host" diff --git a/projects/Allwinner/devices/H2-plus/patches/linux/0001-ARM-dts-sun8i-h2-plus-bananapi-m2-zero-Increase-BT-U.patch b/projects/Allwinner/devices/H2-plus/patches/linux/0001-ARM-dts-sun8i-h2-plus-bananapi-m2-zero-Increase-BT-U.patch deleted file mode 100644 index 21047f5b7a..0000000000 --- a/projects/Allwinner/devices/H2-plus/patches/linux/0001-ARM-dts-sun8i-h2-plus-bananapi-m2-zero-Increase-BT-U.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 4cc652f2c660bd01bd0d8cefde272400cbe82fbe Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Sat, 16 Jan 2021 11:32:04 +0100 -Subject: [PATCH 1/2] ARM: dts: sun8i: h2-plus: bananapi-m2-zero: Increase BT - UART speed - -Bluetooth module on BananaPi M2 Zero can also be used for streaming -audio. However, for that case higher UART speed is required. - -Add a max-speed property. - -Signed-off-by: Jernej Skrabec ---- - arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts | 1 + - 1 file changed, 1 insertion(+) - ---- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts -+++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts -@@ -125,6 +125,7 @@ - - bluetooth { - compatible = "brcm,bcm43438-bt"; -+ max-speed = <1500000>; - clocks = <&rtc 1>; - clock-names = "lpo"; - vbat-supply = <®_vcc3v3>; diff --git a/projects/Allwinner/devices/H2-plus/patches/linux/0002-ARM-dts-sunxi-h2-plus-bananapi-m2-zero-Add-HDMI-out.patch b/projects/Allwinner/devices/H2-plus/patches/linux/0002-ARM-dts-sunxi-h2-plus-bananapi-m2-zero-Add-HDMI-out.patch deleted file mode 100644 index daeef7f63f..0000000000 --- a/projects/Allwinner/devices/H2-plus/patches/linux/0002-ARM-dts-sunxi-h2-plus-bananapi-m2-zero-Add-HDMI-out.patch +++ /dev/null @@ -1,51 +0,0 @@ -From aa47c3b292cb0ffcf2c00b2a12c477ec3027a729 Mon Sep 17 00:00:00 2001 -From: PJBrs -Date: Sat, 16 Jan 2021 11:39:45 +0100 -Subject: [PATCH 2/2] ARM: dts: sunxi: h2-plus-bananapi-m2-zero: Add HDMI out - -Add HDMI out, including the display engine, to the BananaPi M2 Zero. ---- - .../dts/sun8i-h2-plus-bananapi-m2-zero.dts | 25 +++++++++++++++++++ - 1 file changed, 25 insertions(+) - ---- a/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts -+++ b/arch/arm/boot/dts/sun8i-h2-plus-bananapi-m2-zero.dts -@@ -26,6 +26,17 @@ - stdout-path = "serial0:115200n8"; - }; - -+ connector { -+ compatible = "hdmi-connector"; -+ type = "a"; -+ -+ port { -+ hdmi_con_in: endpoint { -+ remote-endpoint = <&hdmi_out_con>; -+ }; -+ }; -+ }; -+ - leds { - compatible = "gpio-leds"; - -@@ -107,6 +118,20 @@ - }; - }; - -+&de { -+ status = "okay"; -+}; -+ -+&hdmi { -+ status = "okay"; -+}; -+ -+&hdmi_out { -+ hdmi_out_con: endpoint { -+ remote-endpoint = <&hdmi_con_in>; -+ }; -+}; -+ - &ohci0 { - status = "okay"; - }; diff --git a/projects/Allwinner/devices/H3/patches/linux/0002-ARM-dts-sunxi-bananapi-m2-plus-Increase-BT-UART-spee.patch b/projects/Allwinner/devices/H3/patches/linux/0002-ARM-dts-sunxi-bananapi-m2-plus-Increase-BT-UART-spee.patch deleted file mode 100644 index 12059e3a72..0000000000 --- a/projects/Allwinner/devices/H3/patches/linux/0002-ARM-dts-sunxi-bananapi-m2-plus-Increase-BT-UART-spee.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 54b5c2cb4fc87ca72daa662423d4d969f3b5edb8 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Sat, 16 Jan 2021 11:49:57 +0100 -Subject: [PATCH] ARM: dts: sunxi: bananapi-m2-plus: Increase BT UART speed - -Bluetooth module on BananaPi M2 Plus can also be used for streaming -audio. However, for that case higher UART speed is required. - -Add a max-speed property. - -Signed-off-by: Jernej Skrabec ---- - arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi | 1 + - 1 file changed, 1 insertion(+) - ---- a/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi -+++ b/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi -@@ -219,6 +219,7 @@ - - bluetooth { - compatible = "brcm,bcm43438-bt"; -+ max-speed = <1500000>; - clocks = <&rtc 1>; - clock-names = "lpo"; - vbat-supply = <®_vcc3v3>; diff --git a/projects/Allwinner/devices/H6/patches/linux/0001-HACK-h6-Add-HDMI-sound-card.patch b/projects/Allwinner/devices/H6/patches/linux/0001-HACK-h6-Add-HDMI-sound-card.patch index 71663f441c..390a82e54a 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0001-HACK-h6-Add-HDMI-sound-card.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0001-HACK-h6-Add-HDMI-sound-card.patch @@ -35,7 +35,7 @@ Signed-off-by: Jernej Skrabec soc { compatible = "simple-bus"; #address-cells = <1>; -@@ -652,7 +670,6 @@ +@@ -655,7 +673,6 @@ dmas = <&dma 4>, <&dma 4>; resets = <&ccu RST_BUS_I2S1>; dma-names = "rx", "tx"; @@ -43,7 +43,7 @@ Signed-off-by: Jernej Skrabec }; spdif: spdif@5093000 { -@@ -785,6 +802,7 @@ +@@ -792,6 +809,7 @@ }; hdmi: hdmi@6000000 { diff --git a/projects/Allwinner/devices/H6/patches/linux/0002-net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regu.patch b/projects/Allwinner/devices/H6/patches/linux/0002-net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regu.patch index 50e7cc4d46..803c9fe408 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0002-net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regu.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0002-net-stmmac-sun8i-Use-devm_regulator_get-for-PHY-regu.patch @@ -22,7 +22,7 @@ Signed-off-by: Ondrej Jirman --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -549,12 +549,10 @@ static int sun8i_dwmac_init(struct platf +@@ -571,12 +571,10 @@ static int sun8i_dwmac_init(struct platf struct sunxi_priv_data *gmac = priv; int ret; @@ -39,7 +39,7 @@ Signed-off-by: Ondrej Jirman } ret = clk_prepare_enable(gmac->tx_clk); -@@ -1021,8 +1019,7 @@ static void sun8i_dwmac_exit(struct plat +@@ -1045,8 +1043,7 @@ static void sun8i_dwmac_exit(struct plat clk_disable_unprepare(gmac->tx_clk); @@ -49,7 +49,7 @@ Signed-off-by: Ondrej Jirman } static void sun8i_dwmac_set_mac_loopback(void __iomem *ioaddr, bool enable) -@@ -1150,12 +1147,12 @@ static int sun8i_dwmac_probe(struct plat +@@ -1174,12 +1171,12 @@ static int sun8i_dwmac_probe(struct plat } /* Optional regulator for PHY */ diff --git a/projects/Allwinner/devices/H6/patches/linux/0003-net-stmmac-sun8i-Rename-PHY-regulator-variable-to-re.patch b/projects/Allwinner/devices/H6/patches/linux/0003-net-stmmac-sun8i-Rename-PHY-regulator-variable-to-re.patch index 81132eb2b0..2d84ecb115 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0003-net-stmmac-sun8i-Rename-PHY-regulator-variable-to-re.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0003-net-stmmac-sun8i-Rename-PHY-regulator-variable-to-re.patch @@ -47,7 +47,7 @@ Signed-off-by: Ondrej Jirman struct reset_control *rst_ephy; const struct emac_variant *variant; struct regmap_field *regmap_field; -@@ -549,9 +551,9 @@ static int sun8i_dwmac_init(struct platf +@@ -571,9 +573,9 @@ static int sun8i_dwmac_init(struct platf struct sunxi_priv_data *gmac = priv; int ret; @@ -59,7 +59,7 @@ Signed-off-by: Ondrej Jirman return ret; } -@@ -572,8 +574,7 @@ static int sun8i_dwmac_init(struct platf +@@ -594,8 +596,7 @@ static int sun8i_dwmac_init(struct platf err_disable_clk: clk_disable_unprepare(gmac->tx_clk); err_disable_regulator: @@ -69,7 +69,7 @@ Signed-off-by: Ondrej Jirman return ret; } -@@ -1019,7 +1020,7 @@ static void sun8i_dwmac_exit(struct plat +@@ -1043,7 +1044,7 @@ static void sun8i_dwmac_exit(struct plat clk_disable_unprepare(gmac->tx_clk); @@ -78,7 +78,7 @@ Signed-off-by: Ondrej Jirman } static void sun8i_dwmac_set_mac_loopback(void __iomem *ioaddr, bool enable) -@@ -1147,11 +1148,9 @@ static int sun8i_dwmac_probe(struct plat +@@ -1171,11 +1172,9 @@ static int sun8i_dwmac_probe(struct plat } /* Optional regulator for PHY */ diff --git a/projects/Allwinner/devices/H6/patches/linux/0004-net-stmmac-sun8i-Add-support-for-enabling-a-regulato.patch b/projects/Allwinner/devices/H6/patches/linux/0004-net-stmmac-sun8i-Add-support-for-enabling-a-regulato.patch index a38543d319..adc32db17e 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0004-net-stmmac-sun8i-Add-support-for-enabling-a-regulato.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0004-net-stmmac-sun8i-Add-support-for-enabling-a-regulato.patch @@ -34,7 +34,7 @@ Signed-off-by: Ondrej Jirman struct reset_control *rst_ephy; const struct emac_variant *variant; struct regmap_field *regmap_field; -@@ -551,10 +554,16 @@ static int sun8i_dwmac_init(struct platf +@@ -573,10 +576,16 @@ static int sun8i_dwmac_init(struct platf struct sunxi_priv_data *gmac = priv; int ret; @@ -52,7 +52,7 @@ Signed-off-by: Ondrej Jirman } ret = clk_prepare_enable(gmac->tx_clk); -@@ -575,6 +584,8 @@ err_disable_clk: +@@ -597,6 +606,8 @@ err_disable_clk: clk_disable_unprepare(gmac->tx_clk); err_disable_regulator: regulator_disable(gmac->regulator_phy); @@ -61,7 +61,7 @@ Signed-off-by: Ondrej Jirman return ret; } -@@ -1021,6 +1032,7 @@ static void sun8i_dwmac_exit(struct plat +@@ -1045,6 +1056,7 @@ static void sun8i_dwmac_exit(struct plat clk_disable_unprepare(gmac->tx_clk); regulator_disable(gmac->regulator_phy); @@ -69,7 +69,7 @@ Signed-off-by: Ondrej Jirman } static void sun8i_dwmac_set_mac_loopback(void __iomem *ioaddr, bool enable) -@@ -1154,6 +1166,15 @@ static int sun8i_dwmac_probe(struct plat +@@ -1178,6 +1190,15 @@ static int sun8i_dwmac_probe(struct plat return ret; } diff --git a/projects/Allwinner/devices/H6/patches/linux/0005-arm64-dts-allwinner-orange-pi-3-Enable-ethernet.patch b/projects/Allwinner/devices/H6/patches/linux/0005-arm64-dts-allwinner-orange-pi-3-Enable-ethernet.patch index 82baa0f4d0..4c6a1d00b2 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0005-arm64-dts-allwinner-orange-pi-3-Enable-ethernet.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0005-arm64-dts-allwinner-orange-pi-3-Enable-ethernet.patch @@ -90,7 +90,7 @@ Signed-off-by: Ondrej Jirman &mmc0 { vmmc-supply = <®_cldo1>; cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ -@@ -207,6 +246,7 @@ +@@ -211,6 +250,7 @@ regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-name = "vcc33-audio-tv-ephy-mac"; diff --git a/projects/Allwinner/devices/H6/patches/linux/0006-arm64-allwinner-dts-h6-enable-USB3-port-on-Pine-H64.patch b/projects/Allwinner/devices/H6/patches/linux/0006-arm64-allwinner-dts-h6-enable-USB3-port-on-Pine-H64.patch index 7178bfbf23..91235b742f 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0006-arm64-allwinner-dts-h6-enable-USB3-port-on-Pine-H64.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0006-arm64-allwinner-dts-h6-enable-USB3-port-on-Pine-H64.patch @@ -28,7 +28,7 @@ Reviewed-by: Chen-Yu Tsai &emac { pinctrl-names = "default"; pinctrl-0 = <&ext_rgmii_pins>; -@@ -331,3 +335,8 @@ +@@ -332,3 +336,8 @@ usb3_vbus-supply = <®_usb_vbus>; status = "okay"; }; diff --git a/projects/Allwinner/devices/H6/patches/linux/0007-arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch b/projects/Allwinner/devices/H6/patches/linux/0007-arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch index fd11bccf83..ba637b82ee 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0007-arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0007-arm64-dts-allwinner-h6-Add-AC200-EPHY-related-nodes.patch @@ -76,7 +76,7 @@ Signed-off-by: Jernej Skrabec /omit-if-no-ref/ spi0_pins: spi0-pins { pins = "PC0", "PC2", "PC3"; -@@ -640,6 +671,31 @@ +@@ -643,6 +674,31 @@ #size-cells = <0>; }; diff --git a/projects/Allwinner/devices/H6/patches/linux/0011-mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch b/projects/Allwinner/devices/H6/patches/linux/0011-mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch index 5770fa769d..bf3b0c5ff6 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0011-mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0011-mmc-sunxi-fix-unusuable-eMMC-on-some-H6-boards-by-di.patch @@ -37,7 +37,7 @@ Signed-off-by: Alejandro González --- a/drivers/mmc/host/sunxi-mmc.c +++ b/drivers/mmc/host/sunxi-mmc.c -@@ -1398,14 +1398,17 @@ static int sunxi_mmc_probe(struct platfo +@@ -1421,14 +1421,17 @@ static int sunxi_mmc_probe(struct platfo /* * Some H5 devices do not have signal traces precise enough to diff --git a/projects/Allwinner/devices/H6/patches/linux/0012-pineh64-model-b-bluetooth-wip.patch b/projects/Allwinner/devices/H6/patches/linux/0012-pineh64-model-b-bluetooth-wip.patch deleted file mode 100644 index 0b76f232ae..0000000000 --- a/projects/Allwinner/devices/H6/patches/linux/0012-pineh64-model-b-bluetooth-wip.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Thu, 29 Oct 2020 21:04:24 +0100 -Subject: [PATCH] pineh64 model b - bluetooth wip - -Signed-off-by: Jernej Skrabec ---- - .../dts/allwinner/sun50i-h6-pine-h64-model-b.dts | 16 ++++++++++++++++ - drivers/bluetooth/hci_h5.c | 3 +++ - 2 files changed, 19 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts -@@ -34,3 +34,19 @@ - non-removable; - status = "okay"; - }; -+ -+&uart1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; -+ uart-has-rtscts; -+ status = "okay"; -+ -+ bluetooth { -+ compatible = "realtek,rtl8723bs-bt"; -+ device-wakeup-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */ -+ host-wakeup-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */ -+ enable-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */ -+ firmware-postfix = "OBDA8723"; -+ max-speed = <1500000>; -+ }; -+}; ---- a/drivers/bluetooth/hci_h5.c -+++ b/drivers/bluetooth/hci_h5.c -@@ -820,6 +820,9 @@ static int h5_serdev_probe(struct serdev - if (!data) - return -ENODEV; - -+ of_property_read_string(dev->of_node, -+ "firmware-postfix", &h5->id); -+ - h5->vnd = (const struct h5_vnd *)data; - } - diff --git a/projects/Allwinner/devices/H6/patches/linux/0020-arm64-dts-allwinner-h6-tanix-tx6-add-bt-enable-rtw88.patch b/projects/Allwinner/devices/H6/patches/linux/0020-arm64-dts-allwinner-h6-tanix-tx6-add-bt-enable-rtw88.patch index 7adac809ec..2feb40b5be 100644 --- a/projects/Allwinner/devices/H6/patches/linux/0020-arm64-dts-allwinner-h6-tanix-tx6-add-bt-enable-rtw88.patch +++ b/projects/Allwinner/devices/H6/patches/linux/0020-arm64-dts-allwinner-h6-tanix-tx6-add-bt-enable-rtw88.patch @@ -29,11 +29,9 @@ Bluetooth: hci0: RTL: loading rtl_bt/rtl8822cs_config.bin .../dts/allwinner/sun50i-h6-tanix-tx6.dts | 32 +++++++++++++++++++ 1 file changed, 48 insertions(+) -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts -index 5233ad1488..06e7820fd9 100644 --- a/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-tanix-tx6.dts -@@ -47,12 +47,29 @@ reg_vcc3v3: vcc3v3 { +@@ -47,12 +47,29 @@ regulator-max-microvolt = <3300000>; }; @@ -63,7 +61,7 @@ index 5233ad1488..06e7820fd9 100644 }; &ac200_pwm_clk { -@@ -122,6 +139,22 @@ &mmc0 { +@@ -122,6 +139,22 @@ status = "okay"; }; @@ -86,7 +84,7 @@ index 5233ad1488..06e7820fd9 100644 &mmc2 { vmmc-supply = <®_vcc3v3>; vqmmc-supply = <®_vcc1v8>; -@@ -158,6 +191,21 @@ &uart0 { +@@ -158,6 +191,21 @@ status = "okay"; }; @@ -108,6 +106,3 @@ index 5233ad1488..06e7820fd9 100644 &usb2otg { dr_mode = "host"; status = "okay"; --- -2.29.2 - diff --git a/projects/Allwinner/linux/linux.aarch64.conf b/projects/Allwinner/linux/linux.aarch64.conf index ff03df8d47..c2d05e73c1 100644 --- a/projects/Allwinner/linux/linux.aarch64.conf +++ b/projects/Allwinner/linux/linux.aarch64.conf @@ -1,12 +1,15 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 5.10.52 Kernel Configuration +# Linux/arm64 5.13.0 Kernel Configuration # CONFIG_CC_VERSION_TEXT="aarch64-none-linux-gnu-gcc.real (GNU Toolchain for the A-profile Architecture 10.2-2020.11 (arm-10.16)) 10.2.1 20201103" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=100201 -CONFIG_LD_VERSION=235010000 CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=23501 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=23501 CONFIG_LLD_VERSION=0 CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y @@ -60,7 +63,6 @@ CONFIG_SPARSE_IRQ=y # CONFIG_GENERIC_IRQ_DEBUGFS is not set # end of IRQ subsystem -CONFIG_GENERIC_IRQ_MULTI_HANDLER=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_ARCH_HAS_TICK_BROADCAST=y @@ -78,6 +80,21 @@ CONFIG_NO_HZ_IDLE=y CONFIG_HIGH_RES_TIMERS=y # end of Timers subsystem +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y +CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +CONFIG_BPF_JIT=y +# CONFIG_BPF_JIT_ALWAYS_ON is not set +CONFIG_BPF_JIT_DEFAULT_ON=y +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +# CONFIG_BPF_PRELOAD is not set +# end of BPF subsystem + # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y @@ -158,6 +175,7 @@ CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_CGROUP_PERF=y CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_MISC is not set # CONFIG_CGROUP_DEBUG is not set CONFIG_SOCK_CGROUP_DATA=y CONFIG_NAMESPACES=y @@ -192,7 +210,6 @@ CONFIG_LD_ORPHAN_WARN=y CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y CONFIG_SYSCTL_EXCEPTION_TRACE=y -CONFIG_BPF=y # CONFIG_EXPERT is not set CONFIG_UID16=y CONFIG_MULTIUSER=y @@ -219,11 +236,6 @@ CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_BASE_RELATIVE=y -CONFIG_BPF_SYSCALL=y -CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y -# CONFIG_BPF_JIT_ALWAYS_ON is not set -CONFIG_BPF_JIT_DEFAULT_ON=y -# CONFIG_BPF_PRELOAD is not set # CONFIG_USERFAULTFD is not set CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y CONFIG_KCMP=y @@ -274,8 +286,7 @@ CONFIG_GENERIC_CSUM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA32=y -CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y -CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y +CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y CONFIG_SMP=y CONFIG_KERNEL_MODE_NEON=y CONFIG_FIX_EARLYCON_MEM=y @@ -287,10 +298,11 @@ CONFIG_ARCH_PROC_KCORE_TEXT=y # Platform selection # # CONFIG_ARCH_ACTIONS is not set -# CONFIG_ARCH_AGILEX is not set CONFIG_ARCH_SUNXI=y # CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_APPLE is not set # CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCM4908 is not set # CONFIG_ARCH_BCM_IPROC is not set # CONFIG_ARCH_BERLIN is not set # CONFIG_ARCH_BITMAIN is not set @@ -312,7 +324,7 @@ CONFIG_ARCH_SUNXI=y # CONFIG_ARCH_ROCKCHIP is not set # CONFIG_ARCH_S32 is not set # CONFIG_ARCH_SEATTLE is not set -# CONFIG_ARCH_STRATIX10 is not set +# CONFIG_ARCH_INTEL_SOCFPGA is not set # CONFIG_ARCH_SYNQUACER is not set # CONFIG_ARCH_TEGRA is not set # CONFIG_ARCH_SPRD is not set @@ -322,7 +334,6 @@ CONFIG_ARCH_SUNXI=y # CONFIG_ARCH_VEXPRESS is not set # CONFIG_ARCH_VISCONTI is not set # CONFIG_ARCH_XGENE is not set -# CONFIG_ARCH_ZX is not set # CONFIG_ARCH_ZYNQMP is not set # end of Platform selection @@ -341,6 +352,7 @@ CONFIG_ARM64_ERRATUM_819472=y CONFIG_ARM64_ERRATUM_832075=y CONFIG_ARM64_ERRATUM_845719=y CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y CONFIG_ARM64_ERRATUM_1024718=y CONFIG_ARM64_ERRATUM_1418040=y CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y @@ -364,6 +376,7 @@ CONFIG_QCOM_FALKOR_ERRATUM_1003=y CONFIG_QCOM_FALKOR_ERRATUM_1009=y CONFIG_QCOM_QDF2400_ERRATUM_0065=y CONFIG_QCOM_FALKOR_ERRATUM_E1041=y +# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set CONFIG_SOCIONEXT_SYNQUACER_PREITS=y # end of ARM errata workarounds via the alternatives framework @@ -393,21 +406,15 @@ CONFIG_HZ_250=y # CONFIG_HZ_1000 is not set CONFIG_HZ=250 CONFIG_SCHED_HRTICK=y -CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_ARCH_SPARSEMEM_DEFAULT=y -CONFIG_ARCH_SELECT_MEMORY_MODEL=y -CONFIG_HAVE_ARCH_PFN_VALID=y CONFIG_HW_PERF_EVENTS=y -CONFIG_SYS_SUPPORTS_HUGETLBFS=y -CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y -CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y -CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y +CONFIG_ARCH_HAS_FILTER_PGPROT=y # CONFIG_PARAVIRT is not set # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set CONFIG_KEXEC=y # CONFIG_KEXEC_FILE is not set CONFIG_CRASH_DUMP=y +CONFIG_TRANS_TABLE=y # CONFIG_XEN is not set CONFIG_FORCE_MAX_ZONEORDER=11 CONFIG_UNMAP_KERNEL_AT_EL0=y @@ -423,16 +430,15 @@ CONFIG_KUSER_HELPERS=y # CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LDAPR=y CONFIG_AS_HAS_LSE_ATOMICS=y CONFIG_ARM64_LSE_ATOMICS=y CONFIG_ARM64_USE_LSE_ATOMICS=y -CONFIG_ARM64_VHE=y # end of ARMv8.1 architectural features # # ARMv8.2 architectural features # -CONFIG_ARM64_UAO=y # CONFIG_ARM64_PMEM is not set CONFIG_ARM64_RAS_EXTN=y CONFIG_ARM64_CNP=y @@ -459,6 +465,7 @@ CONFIG_ARM64_TLB_RANGE=y # # ARMv8.5 architectural features # +CONFIG_AS_HAS_ARMV8_5=y CONFIG_ARM64_BTI=y CONFIG_ARM64_BTI_KERNEL=y CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y @@ -468,6 +475,12 @@ CONFIG_ARM64_AS_HAS_MTE=y CONFIG_ARM64_MTE=y # end of ARMv8.5 architectural features +# +# ARMv8.7 architectural features +# +CONFIG_ARM64_EPAN=y +# end of ARMv8.7 architectural features + CONFIG_ARM64_SVE=y CONFIG_ARM64_MODULE_PLTS=y # CONFIG_ARM64_PSEUDO_NMI is not set @@ -485,8 +498,6 @@ CONFIG_CMDLINE="" # end of Boot options CONFIG_SYSVIPC_COMPAT=y -CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y -CONFIG_ARCH_ENABLE_THP_MIGRATION=y # # Power management options @@ -614,7 +625,6 @@ CONFIG_CRYPTO_AES_ARM64_BS=m # CONFIG_CRASH_CORE=y CONFIG_KEXEC_CORE=y -CONFIG_SET_FS=y # CONFIG_KPROBES is not set CONFIG_JUMP_LABEL=y # CONFIG_STATIC_KEYS_SELFTEST is not set @@ -652,16 +662,23 @@ CONFIG_HAVE_ARCH_SECCOMP=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP=y CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set CONFIG_HAVE_ARCH_STACKLEAK=y CONFIG_HAVE_STACKPROTECTOR=y CONFIG_STACKPROTECTOR=y CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG=y +CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y +CONFIG_LTO_NONE=y +CONFIG_ARCH_SUPPORTS_CFI_CLANG=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y +CONFIG_HAVE_MOVE_PUD=y CONFIG_HAVE_MOVE_PMD=y CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y CONFIG_HAVE_ARCH_HUGE_VMAP=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_HAVE_MOD_ARCH_SPECIFIC=y CONFIG_MODULES_USE_ELF_RELA=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y @@ -676,6 +693,8 @@ CONFIG_COMPAT_OLD_SIGACTION=y CONFIG_COMPAT_32BIT_TIME=y CONFIG_HAVE_ARCH_VMAP_STACK=y CONFIG_VMAP_STACK=y +CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y +# CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT is not set CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y CONFIG_STRICT_KERNEL_RWX=y CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y @@ -685,6 +704,8 @@ CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y # CONFIG_LOCK_EVENT_COUNTS is not set CONFIG_ARCH_HAS_RELR=y CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y # # GCOV-based kernel profiling @@ -706,10 +727,12 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_COMPRESS is not set +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set -# CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y CONFIG_BLK_SCSI_REQUEST=y @@ -780,8 +803,6 @@ CONFIG_COREDUMP=y # # Memory Management options # -CONFIG_SELECT_MEMORY_MODEL=y -CONFIG_SPARSEMEM_MANUAL=y CONFIG_SPARSEMEM=y CONFIG_NEED_MULTIPLE_NODES=y CONFIG_SPARSEMEM_EXTREME=y @@ -790,14 +811,18 @@ CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_HAVE_FAST_GUP=y CONFIG_ARCH_KEEP_MEMBLOCK=y CONFIG_MEMORY_ISOLATION=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # CONFIG_MEMORY_HOTPLUG is not set +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y CONFIG_COMPACTION=y # CONFIG_PAGE_REPORTING is not set CONFIG_MIGRATION=y +CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y +CONFIG_ARCH_ENABLE_THP_MIGRATION=y CONFIG_CONTIG_ALLOC=y CONFIG_PHYS_ADDR_T_64BIT=y -CONFIG_BOUNCE=y CONFIG_KSM=y CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y @@ -811,6 +836,7 @@ CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y CONFIG_CMA=y # CONFIG_CMA_DEBUG is not set CONFIG_CMA_DEBUGFS=y +CONFIG_CMA_SYSFS=y CONFIG_CMA_AREAS=7 # CONFIG_ZPOOL is not set # CONFIG_ZBUD is not set @@ -818,11 +844,11 @@ CONFIG_CMA_AREAS=7 CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y CONFIG_ARCH_HAS_PTE_DEVMAP=y -CONFIG_FRAME_VECTOR=y CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y # CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_BENCHMARK is not set +# CONFIG_GUP_TEST is not set # CONFIG_READ_ONLY_THP_FOR_FS is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y # end of Memory Management options @@ -864,7 +890,7 @@ CONFIG_NET_IP_TUNNEL=y # CONFIG_IP_MROUTE is not set # CONFIG_SYN_COOKIES is not set # CONFIG_NET_IPVTI is not set -CONFIG_NET_UDP_TUNNEL=y +CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m # CONFIG_NET_FOU_IP_TUNNELS is not set # CONFIG_INET_AH is not set @@ -921,8 +947,7 @@ CONFIG_NETFILTER_FAMILY_BRIDGE=y # CONFIG_NETFILTER_NETLINK_LOG is not set # CONFIG_NETFILTER_NETLINK_OSF is not set CONFIG_NF_CONNTRACK=m -CONFIG_NF_LOG_COMMON=m -# CONFIG_NF_LOG_NETDEV is not set +CONFIG_NF_LOG_SYSLOG=m # CONFIG_NF_CONNTRACK_MARK is not set # CONFIG_NF_CONNTRACK_ZONES is not set CONFIG_NF_CONNTRACK_PROCFS=y @@ -951,6 +976,7 @@ CONFIG_NF_NAT_REDIRECT=y CONFIG_NF_NAT_MASQUERADE=y # CONFIG_NF_TABLES is not set CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XTABLES_COMPAT=y # # Xtables combined modules @@ -1065,6 +1091,7 @@ CONFIG_IP_VS_RR=m # CONFIG_IP_VS_MH is not set # CONFIG_IP_VS_SED is not set # CONFIG_IP_VS_NQ is not set +# CONFIG_IP_VS_TWOS is not set # # IPVS SH scheduler @@ -1161,7 +1188,7 @@ CONFIG_BRIDGE=m CONFIG_BRIDGE_IGMP_SNOOPING=y CONFIG_BRIDGE_VLAN_FILTERING=y # CONFIG_BRIDGE_MRP is not set -CONFIG_HAVE_NET_DSA=y +# CONFIG_BRIDGE_CFM is not set # CONFIG_NET_DSA is not set CONFIG_VLAN_8021Q=m CONFIG_VLAN_8021Q_GVRP=y @@ -1243,14 +1270,15 @@ CONFIG_DNS_RESOLVER=y CONFIG_NET_L3_MASTER_DEV=y # CONFIG_QRTR is not set # CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y CONFIG_RPS=y CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_XPS=y CONFIG_CGROUP_NET_PRIO=y CONFIG_CGROUP_NET_CLASSID=y CONFIG_NET_RX_BUSY_POLL=y CONFIG_BQL=y -CONFIG_BPF_JIT=y # CONFIG_BPF_STREAM_PARSER is not set CONFIG_NET_FLOW_LIMIT=y @@ -1275,6 +1303,7 @@ CONFIG_BT_HIDP=m CONFIG_BT_LE=y CONFIG_BT_LEDS=y # CONFIG_BT_MSFTEXT is not set +# CONFIG_BT_AOSPEXT is not set # CONFIG_BT_DEBUGFS is not set # CONFIG_BT_SELFTEST is not set # CONFIG_BT_FEATURE_DEBUG is not set @@ -1347,7 +1376,6 @@ CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_MESSAGE_TRACING is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -# CONFIG_WIMAX is not set CONFIG_RFKILL=m CONFIG_RFKILL_LEDS=y CONFIG_RFKILL_INPUT=y @@ -1362,10 +1390,11 @@ CONFIG_NET_9P=y # CONFIG_LWTUNNEL is not set CONFIG_DST_CACHE=y CONFIG_GRO_CELLS=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y CONFIG_PAGE_POOL=y CONFIG_FAILOVER=y CONFIG_ETHTOOL_NETLINK=y -CONFIG_HAVE_EBPF_JIT=y # # Device Drivers @@ -1378,8 +1407,7 @@ CONFIG_HAVE_PCI=y # # Generic Driver Options # -CONFIG_UEVENT_HELPER=y -CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UEVENT_HELPER is not set CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_STANDALONE=y @@ -1413,6 +1441,7 @@ CONFIG_REGMAP_IRQ=y CONFIG_DMA_SHARED_BUFFER=y # CONFIG_DMA_FENCE_TRACE is not set CONFIG_GENERIC_ARCH_TOPOLOGY=y +CONFIG_GENERIC_ARCH_NUMA=y # end of Generic Driver Options # @@ -1506,6 +1535,8 @@ CONFIG_MTD_CFI_I2=y # # ECC engine support # +# CONFIG_MTD_NAND_ECC_SW_HAMMING is not set +# CONFIG_MTD_NAND_ECC_SW_BCH is not set # end of ECC engine support # end of NAND @@ -1517,6 +1548,9 @@ CONFIG_MTD_CFI_I2=y CONFIG_MTD_SPI_NOR=y CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y +# CONFIG_MTD_SPI_NOR_SWP_DISABLE is not set +CONFIG_MTD_SPI_NOR_SWP_DISABLE_ON_VOLATILE=y +# CONFIG_MTD_SPI_NOR_SWP_KEEP is not set # CONFIG_MTD_UBI is not set # CONFIG_MTD_HYPERBUS is not set CONFIG_DTC=y @@ -1573,7 +1607,6 @@ CONFIG_BLK_DEV_NBD=y # CONFIG_LATTICE_ECP3_CONFIG is not set CONFIG_SRAM=y # CONFIG_XILINX_SDFEC is not set -# CONFIG_PVPANIC is not set # CONFIG_HISI_HIKEY_USB is not set # CONFIG_C2PORT is not set @@ -1602,6 +1635,7 @@ CONFIG_EEPROM_93CX6=m # CONFIG_ECHO is not set # CONFIG_MISC_RTSX_USB is not set # CONFIG_UACCE is not set +# CONFIG_PVPANIC is not set # end of Misc devices # @@ -1642,6 +1676,7 @@ CONFIG_SCSI_LOWLEVEL=y # CONFIG_ISCSI_TCP is not set # CONFIG_ISCSI_BOOT_SYSFS is not set CONFIG_SCSI_HISI_SAS=y +# CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is not set CONFIG_SCSI_UFSHCD=m CONFIG_SCSI_UFSHCD_PLATFORM=m # CONFIG_SCSI_UFS_CDNS_PLATFORM is not set @@ -1728,7 +1763,7 @@ CONFIG_MII=y CONFIG_NET_CORE=y # CONFIG_BONDING is not set CONFIG_DUMMY=m -CONFIG_WIREGUARD=y +CONFIG_WIREGUARD=m # CONFIG_WIREGUARD_DEBUG is not set # CONFIG_EQUALIZER is not set # CONFIG_NET_TEAM is not set @@ -1748,12 +1783,6 @@ CONFIG_TAP=m # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m # CONFIG_NLMON is not set - -# -# Distributed Switch Architecture drivers -# -# end of Distributed Switch Architecture drivers - CONFIG_ETHERNET=y CONFIG_NET_VENDOR_ALACRITECH=y CONFIG_NET_VENDOR_ALLWINNER=y @@ -1764,8 +1793,6 @@ CONFIG_NET_VENDOR_AMD=y CONFIG_AMD_XGBE=y CONFIG_NET_VENDOR_AQUANTIA=y CONFIG_NET_VENDOR_ARC=y -CONFIG_NET_VENDOR_AURORA=y -# CONFIG_AURORA_NB8800 is not set CONFIG_NET_VENDOR_BROADCOM=y # CONFIG_B44 is not set # CONFIG_BCMGENET is not set @@ -1791,6 +1818,7 @@ CONFIG_HNS_ENET=y CONFIG_NET_VENDOR_HUAWEI=y CONFIG_NET_VENDOR_I825XX=y CONFIG_NET_VENDOR_INTEL=y +# CONFIG_NET_VENDOR_MICROSOFT is not set CONFIG_NET_VENDOR_MARVELL=y CONFIG_MVMDIO=y CONFIG_NET_VENDOR_MELLANOX=y @@ -1872,11 +1900,13 @@ CONFIG_AC200_PHY=y # CONFIG_LSI_ET1011C_PHY is not set CONFIG_MARVELL_PHY=m CONFIG_MARVELL_10G_PHY=m +# CONFIG_MARVELL_88X2222_PHY is not set CONFIG_MICREL_PHY=y CONFIG_MICROCHIP_PHY=m # CONFIG_MICROCHIP_T1_PHY is not set # CONFIG_MICROSEMI_PHY is not set # CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set # CONFIG_NXP_TJA11XX_PHY is not set CONFIG_AT803X_PHY=m # CONFIG_QSEMI_PHY is not set @@ -1969,6 +1999,7 @@ CONFIG_USB_NET_ZAURUS=m # CONFIG_USB_VL600 is not set # CONFIG_USB_NET_CH9200 is not set # CONFIG_USB_NET_AQC111 is not set +# CONFIG_USB_RTL8153_ECM is not set CONFIG_WLAN=y CONFIG_WLAN_VENDOR_ADMTEK=y CONFIG_ATH_COMMON=m @@ -2035,6 +2066,7 @@ CONFIG_MT76_LEDS=y CONFIG_MT76_USB=m CONFIG_MT76x02_LIB=m CONFIG_MT76x02_USB=m +CONFIG_MT76_CONNAC_LIB=m CONFIG_MT76x0_COMMON=m CONFIG_MT76x0U=m CONFIG_MT76x2_COMMON=m @@ -2080,11 +2112,8 @@ CONFIG_ZD1211RW=m # CONFIG_MAC80211_HWSIM is not set CONFIG_USB_NET_RNDIS_WLAN=m # CONFIG_VIRT_WIFI is not set - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# # CONFIG_WAN is not set +# CONFIG_WWAN is not set # CONFIG_NETDEVSIM is not set CONFIG_NET_FAILOVER=y # CONFIG_ISDN is not set @@ -2096,7 +2125,6 @@ CONFIG_NET_FAILOVER=y CONFIG_INPUT=y CONFIG_INPUT_LEDS=y CONFIG_INPUT_FF_MEMLESS=y -CONFIG_INPUT_POLLDEV=y # CONFIG_INPUT_SPARSEKMAP is not set CONFIG_INPUT_MATRIXKMAP=y @@ -2174,7 +2202,6 @@ CONFIG_JOYSTICK_XPAD_LEDS=y # CONFIG_JOYSTICK_FSIA6B is not set # CONFIG_INPUT_TABLET is not set CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_TOUCHSCREEN_PROPERTIES=y # CONFIG_TOUCHSCREEN_ADS7846 is not set # CONFIG_TOUCHSCREEN_AD7877 is not set # CONFIG_TOUCHSCREEN_AD7879 is not set @@ -2199,7 +2226,9 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=m # CONFIG_TOUCHSCREEN_FUJITSU is not set # CONFIG_TOUCHSCREEN_GOODIX is not set # CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_HYCON_HY46XX is not set # CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_ILITEK is not set # CONFIG_TOUCHSCREEN_S6SY761 is not set # CONFIG_TOUCHSCREEN_GUNZE is not set # CONFIG_TOUCHSCREEN_EKTF2127 is not set @@ -2211,6 +2240,7 @@ CONFIG_TOUCHSCREEN_ATMEL_MXT=m # CONFIG_TOUCHSCREEN_MCS5000 is not set # CONFIG_TOUCHSCREEN_MMS114 is not set # CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MSG2638 is not set # CONFIG_TOUCHSCREEN_MTOUCH is not set # CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set # CONFIG_TOUCHSCREEN_INEXIO is not set @@ -2265,9 +2295,11 @@ CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_PWM_VIBRA is not set # CONFIG_INPUT_RK805_PWRKEY is not set # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_DA7280_HAPTICS is not set # CONFIG_INPUT_ADXL34X is not set # CONFIG_INPUT_IMS_PCU is not set # CONFIG_INPUT_IQS269A is not set +# CONFIG_INPUT_IQS626A is not set # CONFIG_INPUT_CMA3000 is not set # CONFIG_INPUT_DRV260X_HAPTICS is not set # CONFIG_INPUT_DRV2665_HAPTICS is not set @@ -2360,9 +2392,9 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_SIFIVE is not set # CONFIG_SERIAL_SCCNXP is not set # CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_BCM63XX is not set # CONFIG_SERIAL_ALTERA_JTAGUART is not set # CONFIG_SERIAL_ALTERA_UART is not set -# CONFIG_SERIAL_IFX6X60 is not set CONFIG_SERIAL_XILINX_PS_UART=y CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y # CONFIG_SERIAL_ARC is not set @@ -2376,7 +2408,6 @@ CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_N_GSM is not set # CONFIG_NULL_TTY is not set -# CONFIG_TRACE_SINK is not set # CONFIG_HVC_DCC is not set CONFIG_SERIAL_DEV_BUS=y CONFIG_SERIAL_DEV_CTRL_TTYPORT=y @@ -2394,6 +2425,7 @@ CONFIG_TCG_TPM=y CONFIG_HW_RANDOM_TPM=y # CONFIG_TCG_TIS is not set # CONFIG_TCG_TIS_SPI is not set +# CONFIG_TCG_TIS_I2C_CR50 is not set # CONFIG_TCG_TIS_I2C_ATMEL is not set CONFIG_TCG_TIS_I2C_INFINEON=y # CONFIG_TCG_TIS_I2C_NUVOTON is not set @@ -2459,6 +2491,7 @@ CONFIG_I2C_RK3X=y # External I2C/SMBus adapter drivers # # CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_CP2615 is not set # CONFIG_I2C_ROBOTFUZZ_OSIF is not set # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_TINY_USB is not set @@ -2545,6 +2578,7 @@ CONFIG_PTP_1588_CLOCK=y # # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # +CONFIG_PTP_1588_CLOCK_KVM=y # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set # end of PTP clock support @@ -2564,6 +2598,7 @@ CONFIG_PINCTRL_SINGLE=y CONFIG_PINCTRL_MAX77620=y # CONFIG_PINCTRL_RK805 is not set # CONFIG_PINCTRL_OCELOT is not set +# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set # # Renesas pinctrl drivers @@ -2592,6 +2627,8 @@ CONFIG_PINCTRL_SUN50I_A64_R=y CONFIG_PINCTRL_SUN50I_H5=y CONFIG_PINCTRL_SUN50I_H6=y CONFIG_PINCTRL_SUN50I_H6_R=y +CONFIG_PINCTRL_SUN50I_H616=y +CONFIG_PINCTRL_SUN50I_H616_R=y CONFIG_GPIOLIB=y CONFIG_GPIOLIB_FASTPATH_LIMIT=512 CONFIG_OF_GPIO=y @@ -2661,14 +2698,20 @@ CONFIG_GPIO_MAX77620=y # # end of USB GPIO expanders +# +# Virtual GPIO drivers +# # CONFIG_GPIO_AGGREGATOR is not set # CONFIG_GPIO_MOCKUP is not set +# end of Virtual GPIO drivers + # CONFIG_W1 is not set CONFIG_POWER_RESET=y CONFIG_POWER_RESET_BRCMSTB=y # CONFIG_POWER_RESET_GPIO is not set # CONFIG_POWER_RESET_GPIO_RESTART is not set # CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_REGULATOR is not set # CONFIG_POWER_RESET_RESTART is not set CONFIG_POWER_RESET_VEXPRESS=y CONFIG_POWER_RESET_XGENE=y @@ -2704,6 +2747,7 @@ CONFIG_AXP20X_POWER=y # CONFIG_CHARGER_GPIO is not set # CONFIG_CHARGER_MANAGER is not set # CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_LTC4162L is not set # CONFIG_CHARGER_DETECTOR_MAX14656 is not set # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set @@ -2712,9 +2756,10 @@ CONFIG_AXP20X_POWER=y # CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set # CONFIG_CHARGER_BQ25980 is not set +# CONFIG_CHARGER_BQ256XX is not set # CONFIG_CHARGER_SMB347 is not set # CONFIG_BATTERY_GAUGE_LTC2941 is not set -# CONFIG_BATTERY_RT5033 is not set +# CONFIG_BATTERY_GOLDFISH is not set # CONFIG_CHARGER_RT9455 is not set # CONFIG_CHARGER_UCS1002 is not set # CONFIG_CHARGER_BD99954 is not set @@ -2740,6 +2785,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ADT7462 is not set # CONFIG_SENSORS_ADT7470 is not set # CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AHT10 is not set # CONFIG_SENSORS_AS370 is not set # CONFIG_SENSORS_ASC7621 is not set # CONFIG_SENSORS_AXI_FAN_CONTROL is not set @@ -2747,6 +2793,7 @@ CONFIG_SENSORS_ARM_SCPI=y # CONFIG_SENSORS_ASPEED is not set # CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_CORSAIR_PSU is not set # CONFIG_SENSORS_DRIVETEMP is not set # CONFIG_SENSORS_DS620 is not set # CONFIG_SENSORS_DS1621 is not set @@ -2769,6 +2816,7 @@ CONFIG_SENSORS_ARM_SCPI=y # CONFIG_SENSORS_LTC2947_I2C is not set # CONFIG_SENSORS_LTC2947_SPI is not set # CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2992 is not set # CONFIG_SENSORS_LTC4151 is not set # CONFIG_SENSORS_LTC4215 is not set # CONFIG_SENSORS_LTC4222 is not set @@ -2776,6 +2824,7 @@ CONFIG_SENSORS_ARM_SCPI=y # CONFIG_SENSORS_LTC4260 is not set # CONFIG_SENSORS_LTC4261 is not set # CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX127 is not set # CONFIG_SENSORS_MAX16065 is not set # CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1668 is not set @@ -2790,6 +2839,7 @@ CONFIG_SENSORS_ARM_SCPI=y # CONFIG_SENSORS_MAX31790 is not set # CONFIG_SENSORS_MCP3021 is not set # CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_TPS23861 is not set # CONFIG_SENSORS_MR75203 is not set # CONFIG_SENSORS_ADCXX is not set # CONFIG_SENSORS_LM63 is not set @@ -2816,10 +2866,12 @@ CONFIG_SENSORS_LM90=m # CONFIG_SENSORS_NCT7802 is not set # CONFIG_SENSORS_NCT7904 is not set # CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set # CONFIG_SENSORS_OCC_P8_I2C is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set # CONFIG_SENSORS_PWM_FAN is not set +# CONFIG_SENSORS_SBTSI is not set # CONFIG_SENSORS_SHT15 is not set # CONFIG_SENSORS_SHT21 is not set # CONFIG_SENSORS_SHT3x is not set @@ -2978,6 +3030,7 @@ CONFIG_MFD_MAX77620=y # CONFIG_EZX_PCAP is not set # CONFIG_MFD_CPCAP is not set # CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_NTXEC is not set # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set # CONFIG_MFD_RT5033 is not set @@ -2988,7 +3041,6 @@ CONFIG_MFD_SEC_CORE=y # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set # CONFIG_MFD_SKY81452 is not set -# CONFIG_ABX500_CORE is not set # CONFIG_MFD_STMPE is not set # CONFIG_MFD_SUN6I_PRCM is not set CONFIG_MFD_SYSCON=y @@ -3028,8 +3080,10 @@ CONFIG_MFD_WL1273_CORE=m # CONFIG_MFD_ROHM_BD718XX is not set # CONFIG_MFD_ROHM_BD70528 is not set # CONFIG_MFD_ROHM_BD71828 is not set +# CONFIG_MFD_ROHM_BD957XMUF is not set # CONFIG_MFD_STPMIC1 is not set # CONFIG_MFD_STMFX is not set +# CONFIG_MFD_ATC260X_I2C is not set CONFIG_MFD_VEXPRESS_SYSREG=y # CONFIG_RAVE_SP_CORE is not set # CONFIG_MFD_INTEL_M10_BMC is not set @@ -3044,6 +3098,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_ACT8865 is not set # CONFIG_REGULATOR_AD5398 is not set CONFIG_REGULATOR_AXP20X=y +# CONFIG_REGULATOR_DA9121 is not set # CONFIG_REGULATOR_DA9210 is not set # CONFIG_REGULATOR_DA9211 is not set CONFIG_REGULATOR_FAN53555=y @@ -3073,6 +3128,7 @@ CONFIG_REGULATOR_MAX77620=y # CONFIG_REGULATOR_MPQ7920 is not set # CONFIG_REGULATOR_MT6311 is not set # CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PF8X00 is not set # CONFIG_REGULATOR_PFUZE100 is not set # CONFIG_REGULATOR_PV88060 is not set # CONFIG_REGULATOR_PV88080 is not set @@ -3400,7 +3456,9 @@ CONFIG_VIDEO_CX25840=m # CONFIG_VIDEO_IMX274 is not set # CONFIG_VIDEO_IMX290 is not set # CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX334 is not set # CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_OV02A10 is not set CONFIG_VIDEO_OV2640=m # CONFIG_VIDEO_OV2659 is not set # CONFIG_VIDEO_OV2680 is not set @@ -3408,6 +3466,7 @@ CONFIG_VIDEO_OV2640=m # CONFIG_VIDEO_OV5640 is not set # CONFIG_VIDEO_OV5645 is not set # CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set # CONFIG_VIDEO_OV6650 is not set # CONFIG_VIDEO_OV5670 is not set # CONFIG_VIDEO_OV5675 is not set @@ -3418,6 +3477,7 @@ CONFIG_VIDEO_OV7640=m # CONFIG_VIDEO_OV7670 is not set # CONFIG_VIDEO_OV7740 is not set # CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8865 is not set # CONFIG_VIDEO_OV9640 is not set # CONFIG_VIDEO_OV9650 is not set # CONFIG_VIDEO_OV13858 is not set @@ -3435,12 +3495,13 @@ CONFIG_VIDEO_MT9V011=m # CONFIG_VIDEO_NOON010PC30 is not set # CONFIG_VIDEO_M5MOLS is not set # CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set # CONFIG_VIDEO_RJ54N1 is not set # CONFIG_VIDEO_S5K6AA is not set # CONFIG_VIDEO_S5K6A3 is not set # CONFIG_VIDEO_S5K4ECGX is not set # CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_SMIAPP is not set +# CONFIG_VIDEO_CCS is not set # CONFIG_VIDEO_ET8EK8 is not set # CONFIG_VIDEO_S5C73M3 is not set # end of Camera sensor devices @@ -3601,6 +3662,7 @@ CONFIG_DVB_AU8522=m CONFIG_DVB_AU8522_DTV=m CONFIG_DVB_AU8522_V4L=m CONFIG_DVB_S5H1411=m +CONFIG_DVB_MXL692=m # # ISDB-T (terrestrial) frontends @@ -3694,6 +3756,7 @@ CONFIG_DRM_PANEL=y # # Display Panels # +# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set # CONFIG_DRM_PANEL_ARM_VERSATILE is not set # CONFIG_DRM_PANEL_LVDS is not set # CONFIG_DRM_PANEL_SIMPLE is not set @@ -3723,9 +3786,12 @@ CONFIG_DRM_PANEL_BRIDGE=y # Display Interface Bridges # # CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_CHIPONE_ICN6211 is not set # CONFIG_DRM_CHRONTEL_CH7033 is not set CONFIG_DRM_DISPLAY_CONNECTOR=y +# CONFIG_DRM_LONTIUM_LT8912B is not set # CONFIG_DRM_LONTIUM_LT9611 is not set +# CONFIG_DRM_LONTIUM_LT9611UXC is not set # CONFIG_DRM_LVDS_CODEC is not set # CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set # CONFIG_DRM_NWL_MIPI_DSI is not set @@ -3748,6 +3814,7 @@ CONFIG_DRM_SIMPLE_BRIDGE=y CONFIG_DRM_ANALOGIX_ANX6345=m # CONFIG_DRM_ANALOGIX_ANX78XX is not set CONFIG_DRM_ANALOGIX_DP=m +# CONFIG_DRM_ANALOGIX_ANX7625 is not set # CONFIG_DRM_I2C_ADV7511 is not set # CONFIG_DRM_CDNS_MHDP8546 is not set CONFIG_DRM_DW_HDMI=y @@ -3757,9 +3824,9 @@ CONFIG_DRM_DW_HDMI_CEC=y # end of Display Interface Bridges # CONFIG_DRM_ETNAVIV is not set -# CONFIG_DRM_ARCPGU is not set # CONFIG_DRM_HISI_KIRIN is not set # CONFIG_DRM_MXSFB is not set +# CONFIG_DRM_ARCPGU is not set # CONFIG_DRM_GM12U320 is not set # CONFIG_TINYDRM_HX8357D is not set # CONFIG_TINYDRM_ILI9225 is not set @@ -3773,6 +3840,7 @@ CONFIG_DRM_DW_HDMI_CEC=y CONFIG_DRM_LIMA=m CONFIG_DRM_PANFROST=m # CONFIG_DRM_TIDSS is not set +# CONFIG_DRM_GUD is not set # CONFIG_DRM_LEGACY is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y @@ -3909,6 +3977,7 @@ CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y # CONFIG_SND_USB_VARIAX is not set CONFIG_SND_SOC=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_ADI is not set # CONFIG_SND_SOC_AMD_ACP is not set # CONFIG_SND_ATMEL_SOC is not set # CONFIG_SND_BCM63XX_I2S_WHISTLER is not set @@ -3928,6 +3997,8 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # CONFIG_SND_SOC_FSL_SPDIF is not set # CONFIG_SND_SOC_FSL_ESAI is not set # CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_FSL_XCVR is not set +# CONFIG_SND_SOC_FSL_RPMSG is not set # CONFIG_SND_SOC_IMX_AUDMUX is not set # end of SoC Audio for Freescale CPUs @@ -3957,13 +4028,14 @@ CONFIG_SND_SUN8I_ADDA_PR_REGMAP=y # CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set # CONFIG_SND_SOC_XILINX_SPDIF is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set -# CONFIG_ZX_TDM is not set CONFIG_SND_SOC_I2C_AND_SPI=y # # CODEC drivers # # CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1372_I2C is not set +# CONFIG_SND_SOC_ADAU1372_SPI is not set # CONFIG_SND_SOC_ADAU1701 is not set # CONFIG_SND_SOC_ADAU1761_I2C is not set # CONFIG_SND_SOC_ADAU1761_SPI is not set @@ -4031,14 +4103,16 @@ CONFIG_SND_SOC_HDMI_CODEC=y # CONFIG_SND_SOC_PCM3060_SPI is not set # CONFIG_SND_SOC_PCM3168A_I2C is not set # CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM5102A is not set # CONFIG_SND_SOC_PCM512x_I2C is not set # CONFIG_SND_SOC_PCM512x_SPI is not set # CONFIG_SND_SOC_RK3328 is not set # CONFIG_SND_SOC_RT5616 is not set # CONFIG_SND_SOC_RT5631 is not set +# CONFIG_SND_SOC_RT5659 is not set # CONFIG_SND_SOC_SGTL5000 is not set # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_SIMPLE_MUX is not set # CONFIG_SND_SOC_SPDIF is not set # CONFIG_SND_SOC_SSM2305 is not set # CONFIG_SND_SOC_SSM2602_SPI is not set @@ -4062,7 +4136,8 @@ CONFIG_SND_SOC_HDMI_CODEC=y # CONFIG_SND_SOC_TLV320AIC31XX is not set # CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set # CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set +# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set # CONFIG_SND_SOC_TLV320ADCX140 is not set # CONFIG_SND_SOC_TS3A227E is not set # CONFIG_SND_SOC_TSCS42XX is not set @@ -4097,11 +4172,16 @@ CONFIG_SND_SOC_HDMI_CODEC=y # CONFIG_SND_SOC_MT6351 is not set # CONFIG_SND_SOC_MT6358 is not set # CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8315 is not set # CONFIG_SND_SOC_NAU8540 is not set # CONFIG_SND_SOC_NAU8810 is not set # CONFIG_SND_SOC_NAU8822 is not set # CONFIG_SND_SOC_NAU8824 is not set # CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_SOC_LPASS_RX_MACRO is not set +# CONFIG_SND_SOC_LPASS_TX_MACRO is not set # end of CODEC drivers CONFIG_SND_SIMPLE_CARD_UTILS=y @@ -4147,6 +4227,7 @@ CONFIG_DRAGONRISE_FF=y # CONFIG_HID_ELECOM is not set # CONFIG_HID_ELO is not set CONFIG_HID_EZKEY=y +# CONFIG_HID_FT260 is not set # CONFIG_HID_GEMBIRD is not set # CONFIG_HID_GFRM is not set CONFIG_HID_GLORIOUS=m @@ -4191,11 +4272,13 @@ CONFIG_HID_PENMOUNT=m CONFIG_HID_PETALYNX=m # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PLAYSTATION is not set # CONFIG_HID_PRIMAX is not set # CONFIG_HID_RETRODE is not set # CONFIG_HID_ROCCAT is not set # CONFIG_HID_SAITEK is not set CONFIG_HID_SAMSUNG=m +# CONFIG_HID_SEMITEK is not set CONFIG_HID_SONY=m CONFIG_SONY_FF=y # CONFIG_HID_SPEEDLINK is not set @@ -4233,7 +4316,8 @@ CONFIG_USB_HIDDEV=y # # I2C HID support # -CONFIG_I2C_HID=m +# CONFIG_I2C_HID_OF is not set +# CONFIG_I2C_HID_OF_GOODIX is not set # end of I2C HID support # end of HID support @@ -4322,7 +4406,7 @@ CONFIG_USB_UAS=y # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USBIP_CORE is not set -# CONFIG_USB_CDNS3 is not set +# CONFIG_USB_CDNS_SUPPORT is not set CONFIG_USB_MUSB_HDRC=y # CONFIG_USB_MUSB_HOST is not set # CONFIG_USB_MUSB_GADGET is not set @@ -4437,10 +4521,6 @@ CONFIG_USB_SNP_CORE=y CONFIG_USB_SNP_UDC_PLAT=y # CONFIG_USB_M66592 is not set CONFIG_USB_BDC_UDC=y - -# -# Platform Support -# # CONFIG_USB_NET2272 is not set # CONFIG_USB_GADGET_XILINX is not set # CONFIG_USB_MAX3420_UDC is not set @@ -4564,6 +4644,10 @@ CONFIG_LEDS_SYSCON=y # CONFIG_LEDS_SPI_BYTE is not set # CONFIG_LEDS_TI_LMU_COMMON is not set +# +# Flash and Torch LED drivers +# + # # LED Triggers # @@ -4588,6 +4672,7 @@ CONFIG_LEDS_TRIGGER_PANIC=y # CONFIG_LEDS_TRIGGER_NETDEV is not set # CONFIG_LEDS_TRIGGER_PATTERN is not set # CONFIG_LEDS_TRIGGER_AUDIO is not set +# CONFIG_LEDS_TRIGGER_TTY is not set # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC_SUPPORT=y @@ -4660,7 +4745,6 @@ CONFIG_RTC_DRV_S5M=y # CONFIG_RTC_DRV_MAX6916 is not set # CONFIG_RTC_DRV_R9701 is not set # CONFIG_RTC_DRV_RX4581 is not set -# CONFIG_RTC_DRV_RX6110 is not set # CONFIG_RTC_DRV_RS5C348 is not set # CONFIG_RTC_DRV_MAX6902 is not set # CONFIG_RTC_DRV_PCF2123 is not set @@ -4674,6 +4758,7 @@ CONFIG_RTC_DRV_DS3232=y CONFIG_RTC_DRV_DS3232_HWMON=y # CONFIG_RTC_DRV_PCF2127 is not set # CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX6110 is not set # # Platform RTC drivers @@ -4707,6 +4792,7 @@ CONFIG_RTC_DRV_SUN6I=y # # HID Sensor RTC drivers # +# CONFIG_RTC_DRV_GOLDFISH is not set CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set @@ -4749,6 +4835,7 @@ CONFIG_SYNC_FILE=y # CONFIG_SW_SYNC is not set # CONFIG_UDMABUF is not set # CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_DEBUG is not set # CONFIG_DMABUF_SELFTESTS is not set CONFIG_DMABUF_HEAPS=y CONFIG_DMABUF_HEAPS_SYSTEM=y @@ -4769,9 +4856,9 @@ CONFIG_DMABUF_HEAPS_CMA=y # end of Microsoft Hyper-V guest support # CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set -# CONFIG_COMEDI is not set # CONFIG_RTLLIB is not set CONFIG_RTL8723BS=m # CONFIG_R8712U is not set @@ -4805,7 +4892,6 @@ CONFIG_RTL8723BS=m # # Capacitance to digital converters # -# CONFIG_AD7150 is not set # CONFIG_AD7746 is not set # end of Capacitance to digital converters @@ -4851,12 +4937,6 @@ CONFIG_VIDEO_SUNXI_CEDRUS=y # CONFIG_FB_TFT is not set # CONFIG_KS7010 is not set # CONFIG_PI433 is not set - -# -# Gasket devices -# -# end of Gasket devices - # CONFIG_XIL_AXIS_FIFO is not set # CONFIG_FIELDBUS_DEV is not set # CONFIG_WFX is not set @@ -4880,7 +4960,7 @@ CONFIG_COMMON_CLK_SCPI=y # CONFIG_COMMON_CLK_CDCE925 is not set # CONFIG_COMMON_CLK_CS2000_CP is not set # CONFIG_COMMON_CLK_S2MPS11 is not set -# CONFIG_CLK_QORIQ is not set +# CONFIG_COMMON_CLK_AXI_CLKGEN is not set # CONFIG_COMMON_CLK_XGENE is not set CONFIG_COMMON_CLK_PWM=y # CONFIG_COMMON_CLK_VC5 is not set @@ -4891,11 +4971,13 @@ CONFIG_SUN50I_A64_CCU=y # CONFIG_SUN50I_A100_CCU is not set # CONFIG_SUN50I_A100_R_CCU is not set CONFIG_SUN50I_H6_CCU=y +CONFIG_SUN50I_H616_CCU=y CONFIG_SUN50I_H6_R_CCU=y # CONFIG_SUN8I_A83T_CCU is not set CONFIG_SUN8I_H3_CCU=y CONFIG_SUN8I_DE2_CCU=y CONFIG_SUN8I_R_CCU=y +# CONFIG_XILINX_VCU is not set CONFIG_HWSPINLOCK=y # @@ -4915,6 +4997,7 @@ CONFIG_SUN50I_ERRATUM_UNKNOWN1=y CONFIG_MAILBOX=y CONFIG_ARM_MHU=y +# CONFIG_ARM_MHU_V2 is not set CONFIG_PLATFORM_MHU=y # CONFIG_PL320_MBOX is not set # CONFIG_ALTERA_MBOX is not set @@ -4952,6 +5035,7 @@ CONFIG_IOMMU_DMA=y # CONFIG_RPMSG=y # CONFIG_RPMSG_CHAR is not set +# CONFIG_RPMSG_NS is not set CONFIG_RPMSG_QCOM_GLINK=y CONFIG_RPMSG_QCOM_GLINK_RPM=y # CONFIG_RPMSG_VIRTIO is not set @@ -4968,11 +5052,6 @@ CONFIG_RPMSG_QCOM_GLINK_RPM=y # # end of Amlogic SoC drivers -# -# Aspeed SoC drivers -# -# end of Aspeed SoC drivers - # # Broadcom SoC drivers # @@ -4991,18 +5070,24 @@ CONFIG_SOC_BRCMSTB=y # # end of i.MX SoC drivers +# +# Enable LiteX SoC Builder specific drivers +# +# CONFIG_LITEX_SOC_CONTROLLER is not set +# end of Enable LiteX SoC Builder specific drivers + # # Qualcomm SoC drivers # # end of Qualcomm SoC drivers +CONFIG_SUNXI_MBUS=y CONFIG_SUNXI_SRAM=y CONFIG_SOC_TI=y # # Xilinx SoC drivers # -# CONFIG_XILINX_VCU is not set # end of Xilinx SoC drivers # end of SOC (System On Chip) specific Drivers @@ -5034,6 +5119,7 @@ CONFIG_EXTCON=y # CONFIG_EXTCON_RT8973A is not set # CONFIG_EXTCON_SM5502 is not set CONFIG_EXTCON_USB_GPIO=y +# CONFIG_EXTCON_USBC_TUSB320 is not set CONFIG_MEMORY=y # CONFIG_ARM_PL172_MPMC is not set CONFIG_IIO=y @@ -5064,6 +5150,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_BMA220 is not set # CONFIG_BMA400 is not set # CONFIG_BMC150_ACCEL is not set +# CONFIG_BMI088_ACCEL is not set # CONFIG_DA280 is not set # CONFIG_DA311 is not set # CONFIG_DMARD06 is not set @@ -5108,7 +5195,6 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_AD7923 is not set # CONFIG_AD7949 is not set # CONFIG_AD799X is not set -# CONFIG_AD9467 is not set # CONFIG_ADI_AXI_ADC is not set # CONFIG_AXP20X_ADC is not set # CONFIG_AXP288_ADC is not set @@ -5144,6 +5230,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_TI_ADS8344 is not set # CONFIG_TI_ADS8688 is not set # CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_ADS131E08 is not set # CONFIG_TI_TLC4541 is not set # CONFIG_VF610_ADC is not set # CONFIG_XILINX_XADC is not set @@ -5162,6 +5249,12 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_HMC425 is not set # end of Amplifiers +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# end of Capacitance to digital converters + # # Chemical Sensors # @@ -5182,6 +5275,11 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # # end of Hid Sensor IIO Common +# +# IIO SCMI Sensors +# +# end of IIO SCMI Sensors + # # SSP Sensor Common # @@ -5207,6 +5305,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_AD5758 is not set # CONFIG_AD5761 is not set # CONFIG_AD5764 is not set +# CONFIG_AD5766 is not set # CONFIG_AD5770R is not set # CONFIG_AD5791 is not set # CONFIG_AD7303 is not set @@ -5377,6 +5476,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_SENSORS_HMC5843_SPI is not set # CONFIG_SENSORS_RM3100_I2C is not set # CONFIG_SENSORS_RM3100_SPI is not set +# CONFIG_YAMAHA_YAS530 is not set # end of Magnetometer sensors # @@ -5489,6 +5589,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 CONFIG_PWM=y CONFIG_PWM_SYSFS=y # CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_ATMEL_TCB is not set # CONFIG_PWM_FSL_FTM is not set # CONFIG_PWM_PCA9685 is not set CONFIG_PWM_SUN4I=y @@ -5568,6 +5669,7 @@ CONFIG_RAS=y CONFIG_NVMEM=y CONFIG_NVMEM_SYSFS=y CONFIG_NVMEM_SUNXI_SID=y +# CONFIG_NVMEM_RMEM is not set # # HW tracing support @@ -5633,6 +5735,7 @@ CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_F2FS_FS_COMPRESSION=y CONFIG_F2FS_FS_LZO=y CONFIG_F2FS_FS_LZ4=y +CONFIG_F2FS_FS_LZ4HC=y CONFIG_F2FS_FS_ZSTD=y CONFIG_F2FS_FS_LZORLE=y # CONFIG_FS_DAX is not set @@ -5709,9 +5812,10 @@ CONFIG_PROC_PAGE_MONITOR=y CONFIG_KERNFS=y CONFIG_SYSFS=y CONFIG_TMPFS=y -# CONFIG_TMPFS_POSIX_ACL is not set -# CONFIG_TMPFS_XATTR is not set +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y # CONFIG_TMPFS_INODE64 is not set +CONFIG_ARCH_SUPPORTS_HUGETLBFS=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_MEMFD_CREATE=y @@ -5754,6 +5858,7 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # CONFIG_QNX6FS_FS is not set # CONFIG_ROMFS_FS is not set CONFIG_PSTORE=y +CONFIG_PSTORE_DEFAULT_KMSG_BYTES=10240 CONFIG_PSTORE_DEFLATE_COMPRESS=y # CONFIG_PSTORE_LZO_COMPRESS is not set # CONFIG_PSTORE_LZ4_COMPRESS is not set @@ -5781,7 +5886,7 @@ CONFIG_NFS_V4_1=y CONFIG_NFS_V4_2=y CONFIG_PNFS_FILE_LAYOUT=y CONFIG_PNFS_BLOCK=m -CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_PNFS_FLEXFILE_LAYOUT=y CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" # CONFIG_NFS_V4_1_MIGRATION is not set CONFIG_NFS_V4_SECURITY_LABEL=y @@ -5795,6 +5900,7 @@ CONFIG_GRACE_PERIOD=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_COMMON=y +CONFIG_NFS_V4_2_SSC_HELPER=y CONFIG_SUNRPC=y CONFIG_SUNRPC_GSS=y CONFIG_SUNRPC_BACKCHANNEL=y @@ -5808,6 +5914,7 @@ CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y # CONFIG_CIFS_XATTR is not set # CONFIG_CIFS_DEBUG is not set # CONFIG_CIFS_DFS_UPCALL is not set +# CONFIG_CIFS_SWN_UPCALL is not set # CONFIG_CIFS_ROOT is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set @@ -5896,6 +6003,7 @@ CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y # CONFIG_SECURITY_YAMA is not set # CONFIG_SECURITY_SAFESETID is not set # CONFIG_SECURITY_LOCKDOWN_LSM is not set +# CONFIG_SECURITY_LANDLOCK is not set CONFIG_INTEGRITY=y # CONFIG_INTEGRITY_SIGNATURE is not set # CONFIG_IMA is not set @@ -5962,6 +6070,7 @@ CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_DH=y CONFIG_CRYPTO_ECC=m CONFIG_CRYPTO_ECDH=m +# CONFIG_CRYPTO_ECDSA is not set # CONFIG_CRYPTO_ECRDSA is not set # CONFIG_CRYPTO_SM2 is not set # CONFIG_CRYPTO_CURVE25519 is not set @@ -6014,17 +6123,13 @@ CONFIG_CRYPTO_GHASH=y CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_MD5=y # CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_RMD128 is not set # CONFIG_CRYPTO_RMD160 is not set -# CONFIG_CRYPTO_RMD256 is not set -# CONFIG_CRYPTO_RMD320 is not set CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y CONFIG_CRYPTO_SHA3=m CONFIG_CRYPTO_SM3=m # CONFIG_CRYPTO_STREEBOG is not set -# CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_WP512 is not set # @@ -6041,7 +6146,6 @@ CONFIG_CRYPTO_ARC4=m CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_FCRYPT is not set # CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_SALSA20 is not set CONFIG_CRYPTO_CHACHA20=m # CONFIG_CRYPTO_SEED is not set # CONFIG_CRYPTO_SERPENT is not set @@ -6132,6 +6236,8 @@ CONFIG_SYSTEM_TRUSTED_KEYS="" # CONFIG_SYSTEM_BLACKLIST_KEYRING is not set # end of Certificates for signature checking +CONFIG_BINARY_PRINTF=y + # # Library routines # @@ -6144,6 +6250,7 @@ CONFIG_HAVE_ARCH_BITREVERSE=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_FIND_FIRST_BIT=y # CONFIG_CORDIC is not set # CONFIG_PRIME_NUMBERS is not set CONFIG_RATIONAL=y @@ -6174,9 +6281,10 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y CONFIG_LZO_COMPRESS=y CONFIG_LZO_DECOMPRESS=y -CONFIG_LZ4_COMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y -CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_COMPRESS=m CONFIG_ZSTD_DECOMPRESS=y CONFIG_XZ_DEC=y CONFIG_XZ_DEC_X86=y @@ -6222,6 +6330,7 @@ CONFIG_CMA_SIZE_SEL_MBYTES=y # CONFIG_CMA_SIZE_SEL_MAX is not set CONFIG_CMA_ALIGNMENT=8 # CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set CONFIG_SGL_ALLOC=y CONFIG_CPU_RMAP=y CONFIG_DQL=y @@ -6246,6 +6355,8 @@ CONFIG_SBITMAP=y # CONFIG_STRING_SELFTEST is not set # end of Library routines +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y + # # Kernel hacking # @@ -6272,10 +6383,12 @@ CONFIG_DEBUG_INFO=y # CONFIG_DEBUG_INFO_REDUCED is not set # CONFIG_DEBUG_INFO_COMPRESSED is not set # CONFIG_DEBUG_INFO_SPLIT is not set +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y # CONFIG_DEBUG_INFO_DWARF4 is not set +# CONFIG_DEBUG_INFO_DWARF5 is not set # CONFIG_DEBUG_INFO_BTF is not set +CONFIG_PAHOLE_HAS_SPLIT_BTF=y # CONFIG_GDB_SCRIPTS is not set -CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set @@ -6335,9 +6448,13 @@ CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_PER_CPU_MAPS is not set CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_CC_HAS_KASAN_GENERIC=y CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y # CONFIG_KASAN is not set +CONFIG_HAVE_ARCH_KFENCE=y +# CONFIG_KFENCE is not set # end of Memory Debugging # CONFIG_DEBUG_SHIRQ is not set @@ -6385,10 +6502,10 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_CSD_LOCK_WAIT_DEBUG is not set # end of Lock Debugging (spinlocks, mutexes, etc...) +# CONFIG_DEBUG_IRQFLAGS is not set # CONFIG_STACKTRACE is not set # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set # CONFIG_DEBUG_KOBJECT is not set -CONFIG_HAVE_DEBUG_BUGVERBOSE=y # # Debug kernel data structures @@ -6427,7 +6544,6 @@ CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACING_SUPPORT=y # CONFIG_FTRACE is not set # CONFIG_SAMPLES is not set -CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y CONFIG_STRICT_DEVMEM=y # CONFIG_IO_STRICT_DEVMEM is not set @@ -6453,6 +6569,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_LIST_SORT is not set # CONFIG_TEST_MIN_HEAP is not set # CONFIG_TEST_SORT is not set +# CONFIG_TEST_DIV64 is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_RBTREE_TEST is not set # CONFIG_REED_SOLOMON_TEST is not set @@ -6487,6 +6604,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_STACKINIT is not set # CONFIG_TEST_MEMINIT is not set # CONFIG_TEST_FREE_PAGES is not set +CONFIG_ARCH_USE_MEMTEST=y CONFIG_MEMTEST=y # end of Kernel Testing and Coverage # end of Kernel hacking diff --git a/projects/Allwinner/linux/linux.arm.conf b/projects/Allwinner/linux/linux.arm.conf index 9e8fbbe979..e97659544e 100644 --- a/projects/Allwinner/linux/linux.arm.conf +++ b/projects/Allwinner/linux/linux.arm.conf @@ -1,12 +1,15 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 5.10.53 Kernel Configuration +# Linux/arm 5.13.0 Kernel Configuration # CONFIG_CC_VERSION_TEXT="armv7ve-libreelec-linux-gnueabihf-gcc-10.2.0 (GCC) 10.2.0" CONFIG_CC_IS_GCC=y CONFIG_GCC_VERSION=100200 -CONFIG_LD_VERSION=235010000 CONFIG_CLANG_VERSION=0 +CONFIG_AS_IS_GNU=y +CONFIG_AS_VERSION=23501 +CONFIG_LD_IS_BFD=y +CONFIG_LD_VERSION=23501 CONFIG_LLD_VERSION=0 CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y @@ -84,6 +87,18 @@ CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y # end of Timers subsystem +CONFIG_BPF=y +CONFIG_HAVE_EBPF_JIT=y + +# +# BPF subsystem +# +CONFIG_BPF_SYSCALL=y +# CONFIG_BPF_JIT is not set +# CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set +# CONFIG_BPF_PRELOAD is not set +# end of BPF subsystem + CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set @@ -149,6 +164,7 @@ CONFIG_CGROUP_DEVICE=y CONFIG_CGROUP_CPUACCT=y CONFIG_CGROUP_PERF=y CONFIG_CGROUP_BPF=y +# CONFIG_CGROUP_MISC is not set # CONFIG_CGROUP_DEBUG is not set CONFIG_SOCK_CGROUP_DATA=y CONFIG_NAMESPACES=y @@ -182,7 +198,6 @@ CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y CONFIG_LD_ORPHAN_WARN=y CONFIG_SYSCTL=y CONFIG_HAVE_UID16=y -CONFIG_BPF=y CONFIG_EXPERT=y CONFIG_UID16=y CONFIG_MULTIUSER=y @@ -209,10 +224,9 @@ CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y # CONFIG_KALLSYMS_ALL is not set CONFIG_KALLSYMS_BASE_RELATIVE=y -CONFIG_BPF_SYSCALL=y -# CONFIG_BPF_PRELOAD is not set # CONFIG_USERFAULTFD is not set CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y +CONFIG_KCMP=y CONFIG_RSEQ=y # CONFIG_DEBUG_RSEQ is not set # CONFIG_EMBEDDED is not set @@ -229,7 +243,6 @@ CONFIG_PERF_EVENTS=y CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLUB_DEBUG=y -# CONFIG_SLUB_MEMCG_SYSFS_ON is not set CONFIG_COMPAT_BRK=y # CONFIG_SLAB is not set CONFIG_SLUB=y @@ -265,7 +278,6 @@ CONFIG_MMU=y CONFIG_ARCH_MMAP_RND_BITS_MIN=8 CONFIG_ARCH_MMAP_RND_BITS_MAX=16 CONFIG_ARCH_MULTIPLATFORM=y -# CONFIG_ARCH_EBSA110 is not set # CONFIG_ARCH_EP93XX is not set # CONFIG_ARCH_FOOTBRIDGE is not set # CONFIG_ARCH_IOP32X is not set @@ -322,7 +334,6 @@ CONFIG_ARCH_MULTI_V6_V7=y # CONFIG_SOC_DRA7XX is not set # end of TI OMAP/AM/DM/DRA Family -# CONFIG_ARCH_SIRF is not set # CONFIG_ARCH_QCOM is not set # CONFIG_ARCH_RDA is not set # CONFIG_ARCH_REALTEK is not set @@ -330,7 +341,7 @@ CONFIG_ARCH_MULTI_V6_V7=y # CONFIG_ARCH_ROCKCHIP is not set # CONFIG_ARCH_S5PV210 is not set # CONFIG_ARCH_RENESAS is not set -# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_ARCH_INTEL_SOCFPGA is not set # CONFIG_PLAT_SPEAR is not set # CONFIG_ARCH_STI is not set # CONFIG_ARCH_STM32 is not set @@ -342,13 +353,11 @@ CONFIG_ARCH_SUNXI=y CONFIG_MACH_SUN8I=y # CONFIG_MACH_SUN9I is not set CONFIG_ARCH_SUNXI_MC_SMP=y -# CONFIG_ARCH_TANGO is not set # CONFIG_ARCH_TEGRA is not set # CONFIG_ARCH_UNIPHIER is not set # CONFIG_ARCH_U8500 is not set # CONFIG_ARCH_VEXPRESS is not set # CONFIG_ARCH_WM8850 is not set -# CONFIG_ARCH_ZX is not set # CONFIG_ARCH_ZYNQ is not set # @@ -458,7 +467,6 @@ CONFIG_AEABI=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y -CONFIG_HAVE_ARCH_PFN_VALID=y CONFIG_HIGHMEM=y CONFIG_HIGHPTE=y CONFIG_CPU_SW_DOMAIN_PAN=y @@ -602,8 +610,9 @@ CONFIG_ARM_CRYPTO=y CONFIG_CRYPTO_SHA1_ARM=y CONFIG_CRYPTO_SHA256_ARM=y CONFIG_CRYPTO_SHA512_ARM=y +CONFIG_CRYPTO_BLAKE2S_ARM=y CONFIG_CRYPTO_AES_ARM=y -# CONFIG_CRYPTO_CHACHA20_NEON is not set +CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_POLY1305_ARM=y CONFIG_AS_VFP_VMRS_FPINST=y @@ -611,7 +620,6 @@ CONFIG_AS_VFP_VMRS_FPINST=y # General architecture-dependent options # CONFIG_SET_FS=y -CONFIG_HAVE_OPROFILE=y # CONFIG_KPROBES is not set # CONFIG_JUMP_LABEL is not set CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y @@ -635,13 +643,16 @@ CONFIG_HAVE_HW_BREAKPOINT=y CONFIG_HAVE_PERF_REGS=y CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y CONFIG_HAVE_ARCH_SECCOMP=y CONFIG_HAVE_ARCH_SECCOMP_FILTER=y CONFIG_SECCOMP=y CONFIG_SECCOMP_FILTER=y +# CONFIG_SECCOMP_CACHE_DEBUG is not set CONFIG_HAVE_STACKPROTECTOR=y # CONFIG_STACKPROTECTOR is not set +CONFIG_LTO_NONE=y CONFIG_HAVE_CONTEXT_TRACKING=y CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y @@ -665,6 +676,7 @@ CONFIG_STRICT_MODULE_RWX=y CONFIG_ARCH_HAS_PHYS_TO_DMA=y # CONFIG_LOCK_EVENT_COUNTS is not set CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y +CONFIG_HAVE_ARCH_PFN_VALID=y # # GCOV-based kernel profiling @@ -686,9 +698,12 @@ CONFIG_MODULE_UNLOAD=y # CONFIG_MODVERSIONS is not set # CONFIG_MODULE_SRCVERSION_ALL is not set # CONFIG_MODULE_SIG is not set -# CONFIG_MODULE_COMPRESS is not set +CONFIG_MODULE_COMPRESS_NONE=y +# CONFIG_MODULE_COMPRESS_GZIP is not set +# CONFIG_MODULE_COMPRESS_XZ is not set +# CONFIG_MODULE_COMPRESS_ZSTD is not set # CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS is not set -# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_MODPROBE_PATH="/sbin/modprobe" # CONFIG_TRIM_UNUSED_KSYMS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y @@ -795,6 +810,7 @@ CONFIG_FRONTSWAP=y CONFIG_CMA=y # CONFIG_CMA_DEBUG is not set CONFIG_CMA_DEBUGFS=y +CONFIG_CMA_SYSFS=y CONFIG_CMA_AREAS=7 # CONFIG_ZSWAP is not set # CONFIG_ZPOOL is not set @@ -802,9 +818,9 @@ CONFIG_CMA_AREAS=7 # CONFIG_ZSMALLOC is not set CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_IDLE_PAGE_TRACKING is not set -CONFIG_FRAME_VECTOR=y # CONFIG_PERCPU_STATS is not set -# CONFIG_GUP_BENCHMARK is not set +# CONFIG_GUP_TEST is not set +CONFIG_KMAP_LOCAL=y # end of Memory Management options CONFIG_NET=y @@ -846,7 +862,7 @@ CONFIG_IP_MROUTE=y # CONFIG_IP_PIMSM_V2 is not set # CONFIG_SYN_COOKIES is not set # CONFIG_NET_IPVTI is not set -CONFIG_NET_UDP_TUNNEL=y +CONFIG_NET_UDP_TUNNEL=m CONFIG_NET_FOU=m # CONFIG_NET_FOU_IP_TUNNELS is not set # CONFIG_INET_AH is not set @@ -898,7 +914,7 @@ CONFIG_NETFILTER_FAMILY_BRIDGE=y # CONFIG_NETFILTER_NETLINK_LOG is not set # CONFIG_NETFILTER_NETLINK_OSF is not set CONFIG_NF_CONNTRACK=m -# CONFIG_NF_LOG_NETDEV is not set +# CONFIG_NF_LOG_SYSLOG is not set # CONFIG_NF_CONNTRACK_MARK is not set # CONFIG_NF_CONNTRACK_ZONES is not set CONFIG_NF_CONNTRACK_PROCFS=y @@ -1036,6 +1052,7 @@ CONFIG_IP_VS_RR=m # CONFIG_IP_VS_MH is not set # CONFIG_IP_VS_SED is not set # CONFIG_IP_VS_NQ is not set +# CONFIG_IP_VS_TWOS is not set # # IPVS SH scheduler @@ -1105,7 +1122,7 @@ CONFIG_BRIDGE=m CONFIG_BRIDGE_IGMP_SNOOPING=y # CONFIG_BRIDGE_VLAN_FILTERING is not set # CONFIG_BRIDGE_MRP is not set -CONFIG_HAVE_NET_DSA=y +# CONFIG_BRIDGE_CFM is not set # CONFIG_NET_DSA is not set CONFIG_VLAN_8021Q=m # CONFIG_VLAN_8021Q_GVRP is not set @@ -1187,14 +1204,15 @@ CONFIG_DNS_RESOLVER=y CONFIG_NET_L3_MASTER_DEV=y # CONFIG_QRTR is not set # CONFIG_NET_NCSI is not set +CONFIG_PCPU_DEV_REFCNT=y CONFIG_RPS=y CONFIG_RFS_ACCEL=y +CONFIG_SOCK_RX_QUEUE_MAPPING=y CONFIG_XPS=y CONFIG_CGROUP_NET_PRIO=y CONFIG_CGROUP_NET_CLASSID=y CONFIG_NET_RX_BUSY_POLL=y CONFIG_BQL=y -# CONFIG_BPF_JIT is not set # CONFIG_BPF_STREAM_PARSER is not set CONFIG_NET_FLOW_LIMIT=y @@ -1219,6 +1237,7 @@ CONFIG_BT_HS=y CONFIG_BT_LE=y CONFIG_BT_LEDS=y # CONFIG_BT_MSFTEXT is not set +# CONFIG_BT_AOSPEXT is not set # CONFIG_BT_DEBUGFS is not set # CONFIG_BT_SELFTEST is not set # CONFIG_BT_FEATURE_DEBUG is not set @@ -1292,7 +1311,6 @@ CONFIG_MAC80211_LEDS=y # CONFIG_MAC80211_MESSAGE_TRACING is not set # CONFIG_MAC80211_DEBUG_MENU is not set CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 -# CONFIG_WIMAX is not set # CONFIG_RFKILL is not set # CONFIG_NET_9P is not set # CONFIG_CAIF is not set @@ -1303,10 +1321,11 @@ CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 # CONFIG_LWTUNNEL is not set CONFIG_DST_CACHE=y CONFIG_GRO_CELLS=y +CONFIG_NET_SELFTESTS=y +CONFIG_NET_SOCK_MSG=y CONFIG_PAGE_POOL=y # CONFIG_FAILOVER is not set CONFIG_ETHTOOL_NETLINK=y -CONFIG_HAVE_EBPF_JIT=y # # Device Drivers @@ -1318,8 +1337,7 @@ CONFIG_HAVE_PCI=y # # Generic Driver Options # -CONFIG_UEVENT_HELPER=y -CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UEVENT_HELPER is not set CONFIG_DEVTMPFS=y CONFIG_DEVTMPFS_MOUNT=y CONFIG_STANDALONE=y @@ -1428,7 +1446,6 @@ CONFIG_BLK_DEV_RAM_SIZE=4096 # CONFIG_LATTICE_ECP3_CONFIG is not set # CONFIG_SRAM is not set # CONFIG_XILINX_SDFEC is not set -# CONFIG_PVPANIC is not set # CONFIG_C2PORT is not set # @@ -1455,6 +1472,7 @@ CONFIG_EEPROM_93CX6=m # CONFIG_ALTERA_STAPL is not set # CONFIG_ECHO is not set # CONFIG_MISC_RTSX_USB is not set +# CONFIG_PVPANIC is not set # end of Misc devices # @@ -1571,7 +1589,7 @@ CONFIG_MII=y CONFIG_NET_CORE=y # CONFIG_BONDING is not set CONFIG_DUMMY=m -CONFIG_WIREGUARD=y +CONFIG_WIREGUARD=m # CONFIG_WIREGUARD_DEBUG is not set # CONFIG_EQUALIZER is not set # CONFIG_NET_TEAM is not set @@ -1593,12 +1611,6 @@ CONFIG_TUN=y # CONFIG_TUN_VNET_CROSS_LE is not set CONFIG_VETH=m # CONFIG_NLMON is not set - -# -# Distributed Switch Architecture drivers -# -# end of Distributed Switch Architecture drivers - CONFIG_ETHERNET=y CONFIG_NET_VENDOR_ALACRITECH=y CONFIG_NET_VENDOR_ALLWINNER=y @@ -1607,7 +1619,6 @@ CONFIG_SUN4I_EMAC=y CONFIG_NET_VENDOR_AMAZON=y CONFIG_NET_VENDOR_AQUANTIA=y # CONFIG_NET_VENDOR_ARC is not set -# CONFIG_NET_VENDOR_AURORA is not set # CONFIG_NET_VENDOR_BROADCOM is not set # CONFIG_NET_VENDOR_CADENCE is not set # CONFIG_NET_VENDOR_CAVIUM is not set @@ -1628,6 +1639,7 @@ CONFIG_NET_VENDOR_HISILICON=y # CONFIG_HNS_ENET is not set # CONFIG_NET_VENDOR_HUAWEI is not set # CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MICROSOFT is not set # CONFIG_NET_VENDOR_MARVELL is not set # CONFIG_NET_VENDOR_MELLANOX is not set # CONFIG_NET_VENDOR_MICREL is not set @@ -1694,11 +1706,13 @@ CONFIG_FIXED_PHY=y # CONFIG_LSI_ET1011C_PHY is not set # CONFIG_MARVELL_PHY is not set # CONFIG_MARVELL_10G_PHY is not set +# CONFIG_MARVELL_88X2222_PHY is not set CONFIG_MICREL_PHY=y CONFIG_MICROCHIP_PHY=y CONFIG_MICROCHIP_T1_PHY=y # CONFIG_MICROSEMI_PHY is not set # CONFIG_NATIONAL_PHY is not set +# CONFIG_NXP_C45_TJA11XX_PHY is not set # CONFIG_NXP_TJA11XX_PHY is not set # CONFIG_AT803X_PHY is not set # CONFIG_QSEMI_PHY is not set @@ -1797,8 +1811,8 @@ CONFIG_USB_IPHETH=m # CONFIG_USB_VL600 is not set # CONFIG_USB_NET_CH9200 is not set # CONFIG_USB_NET_AQC111 is not set +# CONFIG_USB_RTL8153_ECM is not set CONFIG_WLAN=y -# CONFIG_WIRELESS_WDS is not set CONFIG_WLAN_VENDOR_ADMTEK=y CONFIG_ATH_COMMON=m CONFIG_WLAN_VENDOR_ATH=y @@ -1877,6 +1891,7 @@ CONFIG_MT76_LEDS=y CONFIG_MT76_USB=m CONFIG_MT76x02_LIB=m CONFIG_MT76x02_USB=m +CONFIG_MT76_CONNAC_LIB=m CONFIG_MT76x0_COMMON=m CONFIG_MT76x0U=m CONFIG_MT76x2_COMMON=m @@ -1924,11 +1939,8 @@ CONFIG_ZD1211RW=m # CONFIG_MAC80211_HWSIM is not set CONFIG_USB_NET_RNDIS_WLAN=m # CONFIG_VIRT_WIFI is not set - -# -# Enable WiMAX (Networking options) to see the WiMAX drivers -# # CONFIG_WAN is not set +# CONFIG_WWAN is not set # CONFIG_NETDEVSIM is not set # CONFIG_NET_FAILOVER is not set # CONFIG_ISDN is not set @@ -1940,7 +1952,6 @@ CONFIG_USB_NET_RNDIS_WLAN=m CONFIG_INPUT=y CONFIG_INPUT_LEDS=y CONFIG_INPUT_FF_MEMLESS=y -# CONFIG_INPUT_POLLDEV is not set # CONFIG_INPUT_SPARSEKMAP is not set # CONFIG_INPUT_MATRIXKMAP is not set @@ -2040,9 +2051,11 @@ CONFIG_INPUT_UINPUT=y # CONFIG_INPUT_PWM_BEEPER is not set # CONFIG_INPUT_PWM_VIBRA is not set # CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_DA7280_HAPTICS is not set # CONFIG_INPUT_ADXL34X is not set # CONFIG_INPUT_IMS_PCU is not set # CONFIG_INPUT_IQS269A is not set +# CONFIG_INPUT_IQS626A is not set # CONFIG_INPUT_CMA3000 is not set # CONFIG_INPUT_DRV260X_HAPTICS is not set # CONFIG_INPUT_DRV2665_HAPTICS is not set @@ -2131,7 +2144,6 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_BCM63XX is not set # CONFIG_SERIAL_ALTERA_JTAGUART is not set # CONFIG_SERIAL_ALTERA_UART is not set -# CONFIG_SERIAL_IFX6X60 is not set # CONFIG_SERIAL_XILINX_PS_UART is not set # CONFIG_SERIAL_ARC is not set # CONFIG_SERIAL_FSL_LPUART is not set @@ -2145,7 +2157,6 @@ CONFIG_SERIAL_MCTRL_GPIO=y # CONFIG_SERIAL_NONSTANDARD is not set # CONFIG_N_GSM is not set # CONFIG_NULL_TTY is not set -# CONFIG_TRACE_SINK is not set # CONFIG_HVC_DCC is not set CONFIG_SERIAL_DEV_BUS=y CONFIG_SERIAL_DEV_CTRL_TTYPORT=y @@ -2158,7 +2169,6 @@ CONFIG_HW_RANDOM=m # CONFIG_HW_RANDOM_CCTRNG is not set # CONFIG_HW_RANDOM_XIPHERA is not set CONFIG_DEVMEM=y -CONFIG_DEVKMEM=y # CONFIG_RAW_DRIVER is not set # CONFIG_TCG_TPM is not set # CONFIG_XILLYBUS is not set @@ -2215,6 +2225,7 @@ CONFIG_I2C_MV64XXX=y # External I2C/SMBus adapter drivers # # CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_CP2615 is not set # CONFIG_I2C_ROBOTFUZZ_OSIF is not set # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_TINY_USB is not set @@ -2298,6 +2309,7 @@ CONFIG_PTP_1588_CLOCK=y # # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # +CONFIG_PTP_1588_CLOCK_KVM=y # CONFIG_PTP_1588_CLOCK_IDT82P33 is not set # CONFIG_PTP_1588_CLOCK_IDTCM is not set # end of PTP clock support @@ -2313,6 +2325,7 @@ CONFIG_PINCTRL_AXP209=y # CONFIG_PINCTRL_SX150X is not set # CONFIG_PINCTRL_STMFX is not set # CONFIG_PINCTRL_OCELOT is not set +# CONFIG_PINCTRL_MICROCHIP_SGPIO is not set # # Renesas pinctrl drivers @@ -2341,6 +2354,8 @@ CONFIG_PINCTRL_SUN8I_H3_R=y # CONFIG_PINCTRL_SUN50I_H5 is not set # CONFIG_PINCTRL_SUN50I_H6 is not set # CONFIG_PINCTRL_SUN50I_H6_R is not set +# CONFIG_PINCTRL_SUN50I_H616 is not set +# CONFIG_PINCTRL_SUN50I_H616_R is not set CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y CONFIG_GPIOLIB=y CONFIG_GPIOLIB_FASTPATH_LIMIT=512 @@ -2408,8 +2423,13 @@ CONFIG_GPIO_CDEV_V1=y # # end of USB GPIO expanders +# +# Virtual GPIO drivers +# # CONFIG_GPIO_AGGREGATOR is not set # CONFIG_GPIO_MOCKUP is not set +# end of Virtual GPIO drivers + # CONFIG_W1 is not set # CONFIG_POWER_RESET is not set CONFIG_POWER_SUPPLY=y @@ -2439,6 +2459,7 @@ CONFIG_AXP20X_POWER=y # CONFIG_CHARGER_GPIO is not set # CONFIG_CHARGER_MANAGER is not set # CONFIG_CHARGER_LT3651 is not set +# CONFIG_CHARGER_LTC4162L is not set # CONFIG_CHARGER_DETECTOR_MAX14656 is not set # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set @@ -2447,9 +2468,10 @@ CONFIG_AXP20X_POWER=y # CONFIG_CHARGER_BQ2515X is not set # CONFIG_CHARGER_BQ25890 is not set # CONFIG_CHARGER_BQ25980 is not set +# CONFIG_CHARGER_BQ256XX is not set # CONFIG_CHARGER_SMB347 is not set # CONFIG_BATTERY_GAUGE_LTC2941 is not set -# CONFIG_BATTERY_RT5033 is not set +# CONFIG_BATTERY_GOLDFISH is not set # CONFIG_CHARGER_RT9455 is not set # CONFIG_CHARGER_UCS1002 is not set # CONFIG_CHARGER_BD99954 is not set @@ -2475,12 +2497,14 @@ CONFIG_HWMON=y # CONFIG_SENSORS_ADT7462 is not set # CONFIG_SENSORS_ADT7470 is not set # CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AHT10 is not set # CONFIG_SENSORS_AS370 is not set # CONFIG_SENSORS_ASC7621 is not set # CONFIG_SENSORS_AXI_FAN_CONTROL is not set # CONFIG_SENSORS_ASPEED is not set # CONFIG_SENSORS_ATXP1 is not set # CONFIG_SENSORS_CORSAIR_CPRO is not set +# CONFIG_SENSORS_CORSAIR_PSU is not set # CONFIG_SENSORS_DRIVETEMP is not set # CONFIG_SENSORS_DS620 is not set # CONFIG_SENSORS_DS1621 is not set @@ -2503,6 +2527,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_LTC2947_I2C is not set # CONFIG_SENSORS_LTC2947_SPI is not set # CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC2992 is not set # CONFIG_SENSORS_LTC4151 is not set # CONFIG_SENSORS_LTC4215 is not set # CONFIG_SENSORS_LTC4222 is not set @@ -2510,6 +2535,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_LTC4260 is not set # CONFIG_SENSORS_LTC4261 is not set # CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX127 is not set # CONFIG_SENSORS_MAX16065 is not set # CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1668 is not set @@ -2524,6 +2550,7 @@ CONFIG_HWMON=y # CONFIG_SENSORS_MAX31790 is not set # CONFIG_SENSORS_MCP3021 is not set # CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_TPS23861 is not set # CONFIG_SENSORS_MR75203 is not set # CONFIG_SENSORS_ADCXX is not set # CONFIG_SENSORS_LM63 is not set @@ -2550,10 +2577,12 @@ CONFIG_HWMON=y # CONFIG_SENSORS_NCT7802 is not set # CONFIG_SENSORS_NCT7904 is not set # CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_NZXT_KRAKEN2 is not set # CONFIG_SENSORS_OCC_P8_I2C is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set # CONFIG_SENSORS_PWM_FAN is not set +# CONFIG_SENSORS_SBTSI is not set # CONFIG_SENSORS_SHT15 is not set # CONFIG_SENSORS_SHT21 is not set # CONFIG_SENSORS_SHT3x is not set @@ -2718,6 +2747,7 @@ CONFIG_MFD_AXP20X_RSB=y # CONFIG_EZX_PCAP is not set # CONFIG_MFD_CPCAP is not set # CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_NTXEC is not set # CONFIG_MFD_RETU is not set # CONFIG_MFD_PCF50633 is not set # CONFIG_MFD_PM8XXX is not set @@ -2729,7 +2759,6 @@ CONFIG_MFD_AXP20X_RSB=y # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_SM501 is not set # CONFIG_MFD_SKY81452 is not set -# CONFIG_ABX500_CORE is not set # CONFIG_MFD_STMPE is not set CONFIG_MFD_SUN6I_PRCM=y CONFIG_MFD_SYSCON=y @@ -2772,8 +2801,10 @@ CONFIG_MFD_WL1273_CORE=m # CONFIG_MFD_ROHM_BD718XX is not set # CONFIG_MFD_ROHM_BD70528 is not set # CONFIG_MFD_ROHM_BD71828 is not set +# CONFIG_MFD_ROHM_BD957XMUF is not set # CONFIG_MFD_STPMIC1 is not set # CONFIG_MFD_STMFX is not set +# CONFIG_MFD_ATC260X_I2C is not set # CONFIG_RAVE_SP_CORE is not set # CONFIG_MFD_INTEL_M10_BMC is not set # end of Multifunction device drivers @@ -2787,6 +2818,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=y # CONFIG_REGULATOR_ACT8865 is not set # CONFIG_REGULATOR_AD5398 is not set CONFIG_REGULATOR_AXP20X=y +# CONFIG_REGULATOR_DA9121 is not set # CONFIG_REGULATOR_DA9210 is not set # CONFIG_REGULATOR_DA9211 is not set # CONFIG_REGULATOR_FAN53555 is not set @@ -2813,6 +2845,7 @@ CONFIG_REGULATOR_GPIO=y # CONFIG_REGULATOR_MPQ7920 is not set # CONFIG_REGULATOR_MT6311 is not set # CONFIG_REGULATOR_PCA9450 is not set +# CONFIG_REGULATOR_PF8X00 is not set # CONFIG_REGULATOR_PFUZE100 is not set # CONFIG_REGULATOR_PV88060 is not set # CONFIG_REGULATOR_PV88080 is not set @@ -3224,7 +3257,9 @@ CONFIG_VIDEO_ST_MIPID02=m # CONFIG_VIDEO_IMX274 is not set # CONFIG_VIDEO_IMX290 is not set # CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX334 is not set # CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_OV02A10 is not set # CONFIG_VIDEO_OV2640 is not set # CONFIG_VIDEO_OV2659 is not set # CONFIG_VIDEO_OV2680 is not set @@ -3232,6 +3267,7 @@ CONFIG_VIDEO_ST_MIPID02=m # CONFIG_VIDEO_OV5640 is not set # CONFIG_VIDEO_OV5645 is not set # CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV5648 is not set # CONFIG_VIDEO_OV6650 is not set # CONFIG_VIDEO_OV5670 is not set # CONFIG_VIDEO_OV5675 is not set @@ -3242,6 +3278,7 @@ CONFIG_VIDEO_OV7640=m # CONFIG_VIDEO_OV7670 is not set # CONFIG_VIDEO_OV7740 is not set # CONFIG_VIDEO_OV8856 is not set +# CONFIG_VIDEO_OV8865 is not set # CONFIG_VIDEO_OV9640 is not set # CONFIG_VIDEO_OV9650 is not set # CONFIG_VIDEO_OV13858 is not set @@ -3259,12 +3296,13 @@ CONFIG_VIDEO_OV7640=m # CONFIG_VIDEO_NOON010PC30 is not set # CONFIG_VIDEO_M5MOLS is not set # CONFIG_VIDEO_RDACM20 is not set +# CONFIG_VIDEO_RDACM21 is not set # CONFIG_VIDEO_RJ54N1 is not set # CONFIG_VIDEO_S5K6AA is not set # CONFIG_VIDEO_S5K6A3 is not set # CONFIG_VIDEO_S5K4ECGX is not set # CONFIG_VIDEO_S5K5BAF is not set -# CONFIG_VIDEO_SMIAPP is not set +# CONFIG_VIDEO_CCS is not set # CONFIG_VIDEO_ET8EK8 is not set # CONFIG_VIDEO_S5C73M3 is not set # end of Camera sensor devices @@ -3457,6 +3495,7 @@ CONFIG_DVB_AU8522=m CONFIG_DVB_AU8522_DTV=m CONFIG_DVB_AU8522_V4L=m CONFIG_DVB_S5H1411=m +# CONFIG_DVB_MXL692 is not set # # ISDB-T (terrestrial) frontends @@ -3577,6 +3616,7 @@ CONFIG_DRM_PANEL=y # # Display Panels # +# CONFIG_DRM_PANEL_ABT_Y030XX067A is not set # CONFIG_DRM_PANEL_ARM_VERSATILE is not set # CONFIG_DRM_PANEL_ILITEK_IL9322 is not set # CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set @@ -3600,9 +3640,12 @@ CONFIG_DRM_PANEL_BRIDGE=y # Display Interface Bridges # # CONFIG_DRM_CDNS_DSI is not set +# CONFIG_DRM_CHIPONE_ICN6211 is not set # CONFIG_DRM_CHRONTEL_CH7033 is not set CONFIG_DRM_DISPLAY_CONNECTOR=m +# CONFIG_DRM_LONTIUM_LT8912B is not set # CONFIG_DRM_LONTIUM_LT9611 is not set +# CONFIG_DRM_LONTIUM_LT9611UXC is not set # CONFIG_DRM_LVDS_CODEC is not set # CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set # CONFIG_DRM_NWL_MIPI_DSI is not set @@ -3624,6 +3667,7 @@ CONFIG_DRM_SIMPLE_BRIDGE=m # CONFIG_DRM_TI_TPD12S015 is not set # CONFIG_DRM_ANALOGIX_ANX6345 is not set # CONFIG_DRM_ANALOGIX_ANX78XX is not set +# CONFIG_DRM_ANALOGIX_ANX7625 is not set # CONFIG_DRM_I2C_ADV7511 is not set # CONFIG_DRM_CDNS_MHDP8546 is not set CONFIG_DRM_DW_HDMI=y @@ -3634,8 +3678,8 @@ CONFIG_DRM_DW_HDMI_CEC=y # CONFIG_DRM_STI is not set # CONFIG_DRM_ETNAVIV is not set -# CONFIG_DRM_ARCPGU is not set # CONFIG_DRM_MXSFB is not set +# CONFIG_DRM_ARCPGU is not set # CONFIG_DRM_GM12U320 is not set # CONFIG_TINYDRM_HX8357D is not set # CONFIG_TINYDRM_ILI9225 is not set @@ -3651,6 +3695,7 @@ CONFIG_DRM_LIMA=m # CONFIG_DRM_PANFROST is not set # CONFIG_DRM_MCDE is not set # CONFIG_DRM_TIDSS is not set +# CONFIG_DRM_GUD is not set # CONFIG_DRM_LEGACY is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y @@ -3760,6 +3805,7 @@ CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y # CONFIG_SND_USB_VARIAX is not set CONFIG_SND_SOC=y CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_ADI is not set # CONFIG_SND_SOC_AMD_ACP is not set # CONFIG_SND_ATMEL_SOC is not set # CONFIG_SND_BCM63XX_I2S_WHISTLER is not set @@ -3779,6 +3825,7 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y # CONFIG_SND_SOC_FSL_SPDIF is not set # CONFIG_SND_SOC_FSL_ESAI is not set # CONFIG_SND_SOC_FSL_MICFIL is not set +# CONFIG_SND_SOC_FSL_XCVR is not set # CONFIG_SND_SOC_IMX_AUDMUX is not set # end of SoC Audio for Freescale CPUs @@ -3807,13 +3854,14 @@ CONFIG_SND_SUN8I_ADDA_PR_REGMAP=y # CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set # CONFIG_SND_SOC_XILINX_SPDIF is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set -# CONFIG_ZX_TDM is not set CONFIG_SND_SOC_I2C_AND_SPI=y # # CODEC drivers # # CONFIG_SND_SOC_AC97_CODEC is not set +# CONFIG_SND_SOC_ADAU1372_I2C is not set +# CONFIG_SND_SOC_ADAU1372_SPI is not set # CONFIG_SND_SOC_ADAU1701 is not set # CONFIG_SND_SOC_ADAU1761_I2C is not set # CONFIG_SND_SOC_ADAU1761_SPI is not set @@ -3881,14 +3929,16 @@ CONFIG_SND_SOC_HDMI_CODEC=y # CONFIG_SND_SOC_PCM3060_SPI is not set # CONFIG_SND_SOC_PCM3168A_I2C is not set # CONFIG_SND_SOC_PCM3168A_SPI is not set +# CONFIG_SND_SOC_PCM5102A is not set # CONFIG_SND_SOC_PCM512x_I2C is not set # CONFIG_SND_SOC_PCM512x_SPI is not set # CONFIG_SND_SOC_RK3328 is not set # CONFIG_SND_SOC_RT5616 is not set # CONFIG_SND_SOC_RT5631 is not set +# CONFIG_SND_SOC_RT5659 is not set # CONFIG_SND_SOC_SGTL5000 is not set # CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set -# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_SIMPLE_MUX is not set CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_SSM2305 is not set # CONFIG_SND_SOC_SSM2602_SPI is not set @@ -3912,7 +3962,8 @@ CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_TLV320AIC31XX is not set # CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set # CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set -# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_TLV320AIC3X_I2C is not set +# CONFIG_SND_SOC_TLV320AIC3X_SPI is not set # CONFIG_SND_SOC_TLV320ADCX140 is not set # CONFIG_SND_SOC_TS3A227E is not set # CONFIG_SND_SOC_TSCS42XX is not set @@ -3947,11 +3998,16 @@ CONFIG_SND_SOC_SPDIF=y # CONFIG_SND_SOC_MT6351 is not set # CONFIG_SND_SOC_MT6358 is not set # CONFIG_SND_SOC_MT6660 is not set +# CONFIG_SND_SOC_NAU8315 is not set # CONFIG_SND_SOC_NAU8540 is not set # CONFIG_SND_SOC_NAU8810 is not set # CONFIG_SND_SOC_NAU8822 is not set # CONFIG_SND_SOC_NAU8824 is not set # CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_LPASS_WSA_MACRO is not set +# CONFIG_SND_SOC_LPASS_VA_MACRO is not set +# CONFIG_SND_SOC_LPASS_RX_MACRO is not set +# CONFIG_SND_SOC_LPASS_TX_MACRO is not set # end of CODEC drivers CONFIG_SND_SIMPLE_CARD_UTILS=y @@ -3997,6 +4053,7 @@ CONFIG_DRAGONRISE_FF=y # CONFIG_HID_ELECOM is not set # CONFIG_HID_ELO is not set CONFIG_HID_EZKEY=y +# CONFIG_HID_FT260 is not set # CONFIG_HID_GEMBIRD is not set # CONFIG_HID_GFRM is not set CONFIG_HID_GLORIOUS=m @@ -4041,11 +4098,13 @@ CONFIG_HID_PENMOUNT=m CONFIG_HID_PETALYNX=m # CONFIG_HID_PICOLCD is not set # CONFIG_HID_PLANTRONICS is not set +# CONFIG_HID_PLAYSTATION is not set # CONFIG_HID_PRIMAX is not set # CONFIG_HID_RETRODE is not set # CONFIG_HID_ROCCAT is not set # CONFIG_HID_SAITEK is not set CONFIG_HID_SAMSUNG=m +# CONFIG_HID_SEMITEK is not set CONFIG_HID_SONY=m CONFIG_SONY_FF=y # CONFIG_HID_SPEEDLINK is not set @@ -4083,7 +4142,8 @@ CONFIG_USB_HIDDEV=y # # I2C HID support # -# CONFIG_I2C_HID is not set +# CONFIG_I2C_HID_OF is not set +# CONFIG_I2C_HID_OF_GOODIX is not set # end of I2C HID support # end of HID support @@ -4170,7 +4230,7 @@ CONFIG_USB_UAS=y # CONFIG_USB_MDC800 is not set # CONFIG_USB_MICROTEK is not set # CONFIG_USBIP_CORE is not set -# CONFIG_USB_CDNS3 is not set +# CONFIG_USB_CDNS_SUPPORT is not set CONFIG_USB_MUSB_HDRC=y # CONFIG_USB_MUSB_HOST is not set # CONFIG_USB_MUSB_GADGET is not set @@ -4236,7 +4296,6 @@ CONFIG_USB_SERIAL=m # CONFIG_USB_SERIAL_SYMBOL is not set # CONFIG_USB_SERIAL_TI is not set # CONFIG_USB_SERIAL_CYBERJACK is not set -# CONFIG_USB_SERIAL_XIRCOM is not set # CONFIG_USB_SERIAL_OPTION is not set # CONFIG_USB_SERIAL_OMNINET is not set # CONFIG_USB_SERIAL_OPTICON is not set @@ -4245,6 +4304,7 @@ CONFIG_USB_SERIAL=m # CONFIG_USB_SERIAL_SSU100 is not set # CONFIG_USB_SERIAL_QT2 is not set # CONFIG_USB_SERIAL_UPD78F0730 is not set +# CONFIG_USB_SERIAL_XR is not set # CONFIG_USB_SERIAL_DEBUG is not set # @@ -4413,6 +4473,10 @@ CONFIG_LEDS_GPIO=y # CONFIG_LEDS_SPI_BYTE is not set # CONFIG_LEDS_TI_LMU_COMMON is not set +# +# Flash and Torch LED drivers +# + # # LED Triggers # @@ -4436,6 +4500,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=y # CONFIG_LEDS_TRIGGER_NETDEV is not set # CONFIG_LEDS_TRIGGER_PATTERN is not set # CONFIG_LEDS_TRIGGER_AUDIO is not set +# CONFIG_LEDS_TRIGGER_TTY is not set # CONFIG_ACCESSIBILITY is not set # CONFIG_INFINIBAND is not set CONFIG_EDAC_ATOMIC_SCRUB=y @@ -4505,7 +4570,6 @@ CONFIG_RTC_INTF_DEV=y # CONFIG_RTC_DRV_MAX6916 is not set # CONFIG_RTC_DRV_R9701 is not set # CONFIG_RTC_DRV_RX4581 is not set -# CONFIG_RTC_DRV_RX6110 is not set # CONFIG_RTC_DRV_RS5C348 is not set # CONFIG_RTC_DRV_MAX6902 is not set # CONFIG_RTC_DRV_PCF2123 is not set @@ -4518,6 +4582,7 @@ CONFIG_RTC_I2C_AND_SPI=y # CONFIG_RTC_DRV_DS3232 is not set # CONFIG_RTC_DRV_PCF2127 is not set # CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX6110 is not set # # Platform RTC drivers @@ -4550,6 +4615,7 @@ CONFIG_RTC_DRV_SUN6I=y # # HID Sensor RTC drivers # +# CONFIG_RTC_DRV_GOLDFISH is not set CONFIG_DMADEVICES=y # CONFIG_DMADEVICES_DEBUG is not set @@ -4585,6 +4651,7 @@ CONFIG_SYNC_FILE=y # CONFIG_SW_SYNC is not set # CONFIG_UDMABUF is not set # CONFIG_DMABUF_MOVE_NOTIFY is not set +# CONFIG_DMABUF_DEBUG is not set # CONFIG_DMABUF_SELFTESTS is not set CONFIG_DMABUF_HEAPS=y CONFIG_DMABUF_HEAPS_SYSTEM=y @@ -4605,9 +4672,9 @@ CONFIG_DMABUF_HEAPS_CMA=y # end of Microsoft Hyper-V guest support # CONFIG_GREYBUS is not set +# CONFIG_COMEDI is not set CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set -# CONFIG_COMEDI is not set # CONFIG_RTLLIB is not set # CONFIG_RTL8723BS is not set # CONFIG_R8712U is not set @@ -4641,7 +4708,6 @@ CONFIG_STAGING=y # # Capacitance to digital converters # -# CONFIG_AD7150 is not set # CONFIG_AD7746 is not set # end of Capacitance to digital converters @@ -4687,12 +4753,6 @@ CONFIG_VIDEO_SUNXI_CEDRUS=y # CONFIG_FB_TFT is not set # CONFIG_KS7010 is not set # CONFIG_PI433 is not set - -# -# Gasket devices -# -# end of Gasket devices - # CONFIG_XIL_AXIS_FIFO is not set # CONFIG_FIELDBUS_DEV is not set # CONFIG_WFX is not set @@ -4712,7 +4772,7 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_CDCE706 is not set # CONFIG_COMMON_CLK_CDCE925 is not set # CONFIG_COMMON_CLK_CS2000_CP is not set -# CONFIG_CLK_QORIQ is not set +# CONFIG_COMMON_CLK_AXI_CLKGEN is not set # CONFIG_COMMON_CLK_PWM is not set # CONFIG_COMMON_CLK_VC5 is not set # CONFIG_COMMON_CLK_FIXED_MMIO is not set @@ -4730,6 +4790,7 @@ CONFIG_SUN8I_H3_CCU=y CONFIG_SUN8I_DE2_CCU=y CONFIG_SUN8I_R40_CCU=y CONFIG_SUN8I_R_CCU=y +# CONFIG_XILINX_VCU is not set # CONFIG_HWSPINLOCK is not set # @@ -4770,11 +4831,6 @@ CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y # # end of Amlogic SoC drivers -# -# Aspeed SoC drivers -# -# end of Aspeed SoC drivers - # # Broadcom SoC drivers # @@ -4793,18 +4849,24 @@ CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y # # end of i.MX SoC drivers +# +# Enable LiteX SoC Builder specific drivers +# +# CONFIG_LITEX_SOC_CONTROLLER is not set +# end of Enable LiteX SoC Builder specific drivers + # # Qualcomm SoC drivers # # end of Qualcomm SoC drivers +CONFIG_SUNXI_MBUS=y CONFIG_SUNXI_SRAM=y # CONFIG_SOC_TI is not set # # Xilinx SoC drivers # -# CONFIG_XILINX_VCU is not set # end of Xilinx SoC drivers # end of SOC (System On Chip) specific Drivers @@ -4836,6 +4898,7 @@ CONFIG_EXTCON=y # CONFIG_EXTCON_RT8973A is not set # CONFIG_EXTCON_SM5502 is not set # CONFIG_EXTCON_USB_GPIO is not set +# CONFIG_EXTCON_USBC_TUSB320 is not set # CONFIG_MEMORY is not set CONFIG_IIO=y CONFIG_IIO_BUFFER=y @@ -4864,6 +4927,7 @@ CONFIG_IIO_SW_TRIGGER=y # CONFIG_BMA220 is not set # CONFIG_BMA400 is not set # CONFIG_BMC150_ACCEL is not set +# CONFIG_BMI088_ACCEL is not set # CONFIG_DA280 is not set # CONFIG_DA311 is not set # CONFIG_DMARD06 is not set @@ -4908,7 +4972,6 @@ CONFIG_IIO_SW_TRIGGER=y # CONFIG_AD7923 is not set # CONFIG_AD7949 is not set # CONFIG_AD799X is not set -# CONFIG_AD9467 is not set # CONFIG_ADI_AXI_ADC is not set CONFIG_AXP20X_ADC=y # CONFIG_AXP288_ADC is not set @@ -4945,6 +5008,7 @@ CONFIG_SUN4I_GPADC=y # CONFIG_TI_ADS8344 is not set # CONFIG_TI_ADS8688 is not set # CONFIG_TI_ADS124S08 is not set +# CONFIG_TI_ADS131E08 is not set # CONFIG_TI_TLC4541 is not set # CONFIG_VF610_ADC is not set # CONFIG_XILINX_XADC is not set @@ -4963,6 +5027,12 @@ CONFIG_SUN4I_GPADC=y # CONFIG_HMC425 is not set # end of Amplifiers +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# end of Capacitance to digital converters + # # Chemical Sensors # @@ -4983,6 +5053,11 @@ CONFIG_SUN4I_GPADC=y # # end of Hid Sensor IIO Common +# +# IIO SCMI Sensors +# +# end of IIO SCMI Sensors + # # SSP Sensor Common # @@ -5008,6 +5083,7 @@ CONFIG_SUN4I_GPADC=y # CONFIG_AD5758 is not set # CONFIG_AD5761 is not set # CONFIG_AD5764 is not set +# CONFIG_AD5766 is not set # CONFIG_AD5770R is not set # CONFIG_AD5791 is not set # CONFIG_AD7303 is not set @@ -5178,6 +5254,7 @@ CONFIG_SUN4I_GPADC=y # CONFIG_SENSORS_HMC5843_SPI is not set # CONFIG_SENSORS_RM3100_I2C is not set # CONFIG_SENSORS_RM3100_SPI is not set +# CONFIG_YAMAHA_YAS530 is not set # end of Magnetometer sensors # @@ -5283,6 +5360,7 @@ CONFIG_SUN4I_GPADC=y CONFIG_PWM=y CONFIG_PWM_SYSFS=y # CONFIG_PWM_DEBUG is not set +# CONFIG_PWM_ATMEL_TCB is not set # CONFIG_PWM_FSL_FTM is not set # CONFIG_PWM_PCA9685 is not set CONFIG_PWM_SUN4I=y @@ -5310,7 +5388,6 @@ CONFIG_RESET_SUNXI=y # CONFIG_GENERIC_PHY=y CONFIG_GENERIC_PHY_MIPI_DPHY=y -# CONFIG_USB_LGM_PHY is not set CONFIG_PHY_SUN4I_USB=y CONFIG_PHY_SUN6I_MIPI_DPHY=y CONFIG_PHY_SUN9I_USB=y @@ -5352,6 +5429,7 @@ CONFIG_ARM_PMU=y CONFIG_NVMEM=y CONFIG_NVMEM_SYSFS=y CONFIG_NVMEM_SUNXI_SID=y +# CONFIG_NVMEM_RMEM is not set # # HW tracing support @@ -5424,6 +5502,7 @@ CONFIG_F2FS_FS_POSIX_ACL=y CONFIG_F2FS_FS_COMPRESSION=y CONFIG_F2FS_FS_LZO=y CONFIG_F2FS_FS_LZ4=y +CONFIG_F2FS_FS_LZ4HC=y CONFIG_F2FS_FS_ZSTD=y CONFIG_F2FS_FS_LZORLE=y CONFIG_FS_POSIX_ACL=y @@ -5438,8 +5517,8 @@ CONFIG_DNOTIFY=y CONFIG_INOTIFY_USER=y # CONFIG_FANOTIFY is not set # CONFIG_QUOTA is not set -# CONFIG_AUTOFS4_FS is not set -# CONFIG_AUTOFS_FS is not set +CONFIG_AUTOFS4_FS=y +CONFIG_AUTOFS_FS=y CONFIG_FUSE_FS=m # CONFIG_CUSE is not set # CONFIG_VIRTIO_FS is not set @@ -5542,7 +5621,7 @@ CONFIG_NFS_V4_1=y CONFIG_NFS_V4_2=y CONFIG_PNFS_FILE_LAYOUT=y CONFIG_PNFS_BLOCK=m -CONFIG_PNFS_FLEXFILE_LAYOUT=m +CONFIG_PNFS_FLEXFILE_LAYOUT=y CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" CONFIG_NFS_V4_1_MIGRATION=y CONFIG_ROOT_NFS=y @@ -5556,6 +5635,7 @@ CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_NFS_ACL_SUPPORT=y CONFIG_NFS_COMMON=y +CONFIG_NFS_V4_2_SSC_HELPER=y CONFIG_SUNRPC=y CONFIG_SUNRPC_GSS=y CONFIG_SUNRPC_BACKCHANNEL=y @@ -5570,6 +5650,7 @@ CONFIG_CIFS_ALLOW_INSECURE_LEGACY=y # CONFIG_CIFS_XATTR is not set # CONFIG_CIFS_DEBUG is not set # CONFIG_CIFS_DFS_UPCALL is not set +# CONFIG_CIFS_SWN_UPCALL is not set # CONFIG_CIFS_ROOT is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set @@ -5704,6 +5785,7 @@ CONFIG_CRYPTO_RSA=y CONFIG_CRYPTO_DH=y CONFIG_CRYPTO_ECC=m CONFIG_CRYPTO_ECDH=m +CONFIG_CRYPTO_ECDSA=m # CONFIG_CRYPTO_ECRDSA is not set # CONFIG_CRYPTO_SM2 is not set # CONFIG_CRYPTO_CURVE25519 is not set @@ -5756,17 +5838,13 @@ CONFIG_CRYPTO_GHASH=y CONFIG_CRYPTO_MD4=y CONFIG_CRYPTO_MD5=y # CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_RMD128 is not set # CONFIG_CRYPTO_RMD160 is not set -# CONFIG_CRYPTO_RMD256 is not set -# CONFIG_CRYPTO_RMD320 is not set CONFIG_CRYPTO_SHA1=y CONFIG_CRYPTO_SHA256=y CONFIG_CRYPTO_SHA512=y # CONFIG_CRYPTO_SHA3 is not set # CONFIG_CRYPTO_SM3 is not set # CONFIG_CRYPTO_STREEBOG is not set -# CONFIG_CRYPTO_TGR192 is not set # CONFIG_CRYPTO_WP512 is not set # @@ -5783,7 +5861,6 @@ CONFIG_CRYPTO_ARC4=m CONFIG_CRYPTO_DES=y # CONFIG_CRYPTO_FCRYPT is not set # CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_SALSA20 is not set # CONFIG_CRYPTO_CHACHA20 is not set # CONFIG_CRYPTO_SEED is not set # CONFIG_CRYPTO_SERPENT is not set @@ -5824,9 +5901,9 @@ CONFIG_CRYPTO_HASH_INFO=y # CONFIG_CRYPTO_LIB_AES=y CONFIG_CRYPTO_LIB_ARC4=y -CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_BLAKE2S=y CONFIG_CRYPTO_LIB_BLAKE2S=y -CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y +CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y CONFIG_CRYPTO_LIB_CHACHA=y CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y CONFIG_CRYPTO_LIB_CURVE25519=y @@ -5840,6 +5917,7 @@ CONFIG_CRYPTO_HW=y CONFIG_CRYPTO_DEV_ALLWINNER=y CONFIG_CRYPTO_DEV_SUN4I_SS=m # CONFIG_CRYPTO_DEV_SUN4I_SS_PRNG is not set +# CONFIG_CRYPTO_DEV_SUN4I_SS_DEBUG is not set CONFIG_CRYPTO_DEV_SUN8I_CE=m # CONFIG_CRYPTO_DEV_SUN8I_CE_DEBUG is not set CONFIG_CRYPTO_DEV_SUN8I_CE_HASH=y @@ -5872,6 +5950,8 @@ CONFIG_SYSTEM_TRUSTED_KEYS="" # CONFIG_SYSTEM_BLACKLIST_KEYRING is not set # end of Certificates for signature checking +CONFIG_BINARY_PRINTF=y + # # Library routines # @@ -5908,11 +5988,12 @@ CONFIG_XXHASH=y # CONFIG_RANDOM32_SELFTEST is not set CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=m -CONFIG_LZO_COMPRESS=y +CONFIG_LZO_COMPRESS=m CONFIG_LZO_DECOMPRESS=y -CONFIG_LZ4_COMPRESS=y +CONFIG_LZ4_COMPRESS=m +CONFIG_LZ4HC_COMPRESS=m CONFIG_LZ4_DECOMPRESS=y -CONFIG_ZSTD_COMPRESS=y +CONFIG_ZSTD_COMPRESS=m CONFIG_ZSTD_DECOMPRESS=y CONFIG_XZ_DEC=y CONFIG_XZ_DEC_X86=y @@ -5950,6 +6031,7 @@ CONFIG_CMA_SIZE_SEL_MBYTES=y # CONFIG_CMA_SIZE_SEL_MAX is not set CONFIG_CMA_ALIGNMENT=8 # CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_MAP_BENCHMARK is not set CONFIG_SGL_ALLOC=y CONFIG_CPU_RMAP=y CONFIG_DQL=y @@ -5973,6 +6055,8 @@ CONFIG_SBITMAP=y # CONFIG_STRING_SELFTEST is not set # end of Library routines +CONFIG_GENERIC_LIB_DEVMEM_IS_ALLOWED=y + # # Kernel hacking # @@ -5996,7 +6080,6 @@ CONFIG_SYMBOLIC_ERRNAME=y # Compile-time checks and compiler options # # CONFIG_DEBUG_INFO is not set -CONFIG_ENABLE_MUST_CHECK=y CONFIG_FRAME_WARN=1024 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set @@ -6004,6 +6087,7 @@ CONFIG_FRAME_WARN=1024 # CONFIG_DEBUG_SECTION_MISMATCH is not set CONFIG_SECTION_MISMATCH_WARN_ONLY=y # CONFIG_DEBUG_FORCE_FUNCTION_ALIGN_32B is not set +# CONFIG_VMLINUX_MAP is not set # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set # end of Compile-time checks and compiler options @@ -6047,9 +6131,12 @@ CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y # CONFIG_DEBUG_VIRTUAL is not set CONFIG_DEBUG_MEMORY_INIT=y # CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_KMAP_LOCAL is not set # CONFIG_DEBUG_HIGHMEM is not set +CONFIG_HAVE_ARCH_KASAN=y CONFIG_CC_HAS_KASAN_GENERIC=y CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y +# CONFIG_KASAN is not set # end of Memory Debugging # CONFIG_DEBUG_SHIRQ is not set @@ -6094,6 +6181,7 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_SCF_TORTURE_TEST is not set # end of Lock Debugging (spinlocks, mutexes, etc...) +# CONFIG_DEBUG_IRQFLAGS is not set # CONFIG_STACKTRACE is not set # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set # CONFIG_DEBUG_KOBJECT is not set @@ -6135,7 +6223,6 @@ CONFIG_HAVE_C_RECORDMCOUNT=y CONFIG_TRACING_SUPPORT=y # CONFIG_FTRACE is not set # CONFIG_SAMPLES is not set -CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y # CONFIG_STRICT_DEVMEM is not set # @@ -6167,6 +6254,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_LIST_SORT is not set # CONFIG_TEST_MIN_HEAP is not set # CONFIG_TEST_SORT is not set +# CONFIG_TEST_DIV64 is not set # CONFIG_BACKTRACE_SELF_TEST is not set # CONFIG_RBTREE_TEST is not set # CONFIG_REED_SOLOMON_TEST is not set @@ -6201,6 +6289,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_STACKINIT is not set # CONFIG_TEST_MEMINIT is not set # CONFIG_TEST_FREE_PAGES is not set +CONFIG_ARCH_USE_MEMTEST=y # CONFIG_MEMTEST is not set # end of Kernel Testing and Coverage # end of Kernel hacking diff --git a/projects/Allwinner/patches/linux/crust/0001-Input-axp20x-pek-allow-wakeup-after-shutdown.patch b/projects/Allwinner/patches/linux/0001-Input-axp20x-pek-allow-wakeup-after-shutdown.patch similarity index 100% rename from projects/Allwinner/patches/linux/crust/0001-Input-axp20x-pek-allow-wakeup-after-shutdown.patch rename to projects/Allwinner/patches/linux/0001-Input-axp20x-pek-allow-wakeup-after-shutdown.patch diff --git a/projects/Allwinner/patches/linux/0001-media-cedrus-Add-support-for-R40.patch b/projects/Allwinner/patches/linux/0001-media-cedrus-Add-support-for-R40.patch deleted file mode 100644 index 37665933e4..0000000000 --- a/projects/Allwinner/patches/linux/0001-media-cedrus-Add-support-for-R40.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 9a7e6c2d8a18a24b013c1ad165ed04bb7d2c7716 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Tue, 25 Aug 2020 19:35:22 +0200 -Subject: [PATCH 01/44] media: cedrus: Add support for R40 - -Video engine in R40 is very similar to that in A33 but it runs on lower -speed, at least according to OS images released by board designer. - -Signed-off-by: Jernej Skrabec -Signed-off-by: Maxime Ripard -Link: https://lore.kernel.org/r/20200825173523.1289379-5-jernej.skrabec@siol.net ---- - drivers/staging/media/sunxi/cedrus/cedrus.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- a/drivers/staging/media/sunxi/cedrus/cedrus.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -508,6 +508,11 @@ static const struct cedrus_variant sun8i - .mod_rate = 402000000, - }; - -+static const struct cedrus_variant sun8i_r40_cedrus_variant = { -+ .capabilities = CEDRUS_CAPABILITY_UNTILED, -+ .mod_rate = 297000000, -+}; -+ - static const struct cedrus_variant sun50i_a64_cedrus_variant = { - .capabilities = CEDRUS_CAPABILITY_UNTILED | - CEDRUS_CAPABILITY_H265_DEC, -@@ -549,6 +554,10 @@ static const struct of_device_id cedrus_ - .data = &sun8i_h3_cedrus_variant, - }, - { -+ .compatible = "allwinner,sun8i-r40-video-engine", -+ .data = &sun8i_r40_cedrus_variant, -+ }, -+ { - .compatible = "allwinner,sun50i-a64-video-engine", - .data = &sun50i_a64_cedrus_variant, - }, diff --git a/projects/Allwinner/patches/linux/crust/0024-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch b/projects/Allwinner/patches/linux/0002-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch similarity index 98% rename from projects/Allwinner/patches/linux/crust/0024-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch rename to projects/Allwinner/patches/linux/0002-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch index 34eb616053..8ac83e1b33 100644 --- a/projects/Allwinner/patches/linux/crust/0024-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch +++ b/projects/Allwinner/patches/linux/0002-clk-Implement-protected-clocks-for-all-OF-clock-prov.patch @@ -139,8 +139,8 @@ Signed-off-by: Samuel Holland return rc; --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c -@@ -4188,6 +4188,37 @@ void devm_clk_hw_unregister(struct devic - EXPORT_SYMBOL_GPL(devm_clk_hw_unregister); +@@ -4271,6 +4271,37 @@ struct clk *devm_clk_hw_get_clk(struct d + EXPORT_SYMBOL_GPL(devm_clk_hw_get_clk); /* + * clk-conf helpers diff --git a/projects/Allwinner/patches/linux/0002-media-sunxi-cir-allow-timeout-to-be-set-at-runtime.patch b/projects/Allwinner/patches/linux/0002-media-sunxi-cir-allow-timeout-to-be-set-at-runtime.patch deleted file mode 100644 index 602c26a462..0000000000 --- a/projects/Allwinner/patches/linux/0002-media-sunxi-cir-allow-timeout-to-be-set-at-runtime.patch +++ /dev/null @@ -1,99 +0,0 @@ -From f710d6403b7716d7a5319e51c4cb3c217ec85b73 Mon Sep 17 00:00:00 2001 -From: Sean Young -Date: Tue, 10 Nov 2020 09:30:38 +0100 -Subject: [PATCH 02/44] media: sunxi-cir: allow timeout to be set at runtime - -This allows the timeout to be set with the LIRC_SET_REC_TIMEOUT ioctl. - -The timeout was hardcoded at just over 20ms, but returned 120ms when -queried with the LIRC_GET_REC_TIMEOUT ioctl. - -This also ensures the idle threshold is set correctly with a base clock -other than 8Mhz. - -Acked-by: Maxime Ripard -Signed-off-by: Sean Young -Signed-off-by: Mauro Carvalho Chehab ---- - drivers/media/rc/sunxi-cir.c | 48 ++++++++++++++++++++++++++++++------ - 1 file changed, 40 insertions(+), 8 deletions(-) - ---- a/drivers/media/rc/sunxi-cir.c -+++ b/drivers/media/rc/sunxi-cir.c -@@ -73,10 +73,6 @@ - #define SUNXI_IR_BASE_CLK 8000000 - /* Noise threshold in samples */ - #define SUNXI_IR_RXNOISE 1 --/* Idle Threshold in samples */ --#define SUNXI_IR_RXIDLE 20 --/* Time after which device stops sending data in ms */ --#define SUNXI_IR_TIMEOUT 120 - - /** - * struct sunxi_ir_quirks - Differences between SoC variants. -@@ -146,6 +142,41 @@ static irqreturn_t sunxi_ir_irq(int irqn - return IRQ_HANDLED; - } - -+/* Convert idle threshold to usec */ -+static unsigned int sunxi_ithr_to_usec(unsigned int base_clk, unsigned int ithr) -+{ -+ return DIV_ROUND_CLOSEST(USEC_PER_SEC * (ithr + 1), -+ base_clk / (128 * 64)); -+} -+ -+/* Convert usec to idle threshold */ -+static unsigned int sunxi_usec_to_ithr(unsigned int base_clk, unsigned int usec) -+{ -+ /* make sure we don't end up with a timeout less than requested */ -+ return DIV_ROUND_UP((base_clk / (128 * 64)) * usec, USEC_PER_SEC) - 1; -+} -+ -+static int sunxi_ir_set_timeout(struct rc_dev *rc_dev, unsigned int timeout) -+{ -+ struct sunxi_ir *ir = rc_dev->priv; -+ unsigned int base_clk = clk_get_rate(ir->clk); -+ unsigned long flags; -+ -+ unsigned int ithr = sunxi_usec_to_ithr(base_clk, timeout); -+ -+ dev_dbg(rc_dev->dev.parent, "setting idle threshold to %u\n", ithr); -+ -+ spin_lock_irqsave(&ir->ir_lock, flags); -+ /* Set noise threshold and idle threshold */ -+ writel(REG_CIR_NTHR(SUNXI_IR_RXNOISE) | REG_CIR_ITHR(ithr), -+ ir->base + SUNXI_IR_CIR_REG); -+ spin_unlock_irqrestore(&ir->ir_lock, flags); -+ -+ rc_dev->timeout = sunxi_ithr_to_usec(base_clk, ithr); -+ -+ return 0; -+} -+ - static int sunxi_ir_probe(struct platform_device *pdev) - { - int ret = 0; -@@ -242,9 +273,11 @@ static int sunxi_ir_probe(struct platfor - ir->rc->map_name = ir->map_name ?: RC_MAP_EMPTY; - ir->rc->dev.parent = dev; - ir->rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER; -- /* Frequency after IR internal divider with sample period in ns */ -+ /* Frequency after IR internal divider with sample period in us */ - ir->rc->rx_resolution = (USEC_PER_SEC / (b_clk_freq / 64)); -- ir->rc->timeout = MS_TO_US(SUNXI_IR_TIMEOUT); -+ ir->rc->min_timeout = sunxi_ithr_to_usec(b_clk_freq, 0); -+ ir->rc->max_timeout = sunxi_ithr_to_usec(b_clk_freq, 255); -+ ir->rc->s_timeout = sunxi_ir_set_timeout; - ir->rc->driver_name = SUNXI_IR_DEV; - - ret = rc_register_device(ir->rc); -@@ -272,8 +305,7 @@ static int sunxi_ir_probe(struct platfor - writel(REG_CTL_MD, ir->base+SUNXI_IR_CTL_REG); - - /* Set noise threshold and idle threshold */ -- writel(REG_CIR_NTHR(SUNXI_IR_RXNOISE)|REG_CIR_ITHR(SUNXI_IR_RXIDLE), -- ir->base + SUNXI_IR_CIR_REG); -+ sunxi_ir_set_timeout(ir->rc, IR_DEFAULT_TIMEOUT); - - /* Invert Input Signal */ - writel(REG_RXCTL_RPPI, ir->base + SUNXI_IR_RXCTL_REG); diff --git a/projects/Allwinner/patches/linux/0003-ASoC-sun4i-i2s-Change-set_chan_cfg-params.patch b/projects/Allwinner/patches/linux/0003-ASoC-sun4i-i2s-Change-set_chan_cfg-params.patch deleted file mode 100644 index 5cb7c89a06..0000000000 --- a/projects/Allwinner/patches/linux/0003-ASoC-sun4i-i2s-Change-set_chan_cfg-params.patch +++ /dev/null @@ -1,118 +0,0 @@ -From a8bdfe3893f9b226492dac4b4e0d37a27dbee201 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= -Date: Fri, 30 Oct 2020 15:46:35 +0100 -Subject: [PATCH 03/44] ASoC: sun4i-i2s: Change set_chan_cfg() params -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -As slots and slot_width can be set manually using set_tdm(). -These values are then kept in sun4i_i2s struct. -So we need to check if these values are set or not. - -This is not done actually and will trigger a bug. -For example, if we set to the simple soundcard in the device-tree -dai-tdm-slot-width = <32> and then start a stream using S16_LE, -currently we would calculate BCLK for 32-bit slots, but program -lrck_period for 16-bit slots, making the sample rate double what we -expected. - -To fix this, we need to check if these values are set or not but as -this logic is already done by the caller. Avoid duplicating this -logic and just pass the required values as params to set_chan_cfg(). - -Suggested-by: Samuel Holland -Acked-by: Maxime Ripard -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-3-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 32 ++++++++++++++++++-------------- - 1 file changed, 18 insertions(+), 14 deletions(-) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -162,8 +162,15 @@ struct sun4i_i2s_quirks { - unsigned long (*get_bclk_parent_rate)(const struct sun4i_i2s *); - s8 (*get_sr)(const struct sun4i_i2s *, int); - s8 (*get_wss)(const struct sun4i_i2s *, int); -- int (*set_chan_cfg)(const struct sun4i_i2s *, -- const struct snd_pcm_hw_params *); -+ -+ /* -+ * In the set_chan_cfg() function pointer: -+ * @slots: channels per frame + padding slots, regardless of format -+ * @slot_width: bits per sample + padding bits, regardless of format -+ */ -+ int (*set_chan_cfg)(const struct sun4i_i2s *i2s, -+ unsigned int channels, unsigned int slots, -+ unsigned int slot_width); - int (*set_fmt)(const struct sun4i_i2s *, unsigned int); - }; - -@@ -399,10 +406,9 @@ static s8 sun8i_i2s_get_sr_wss(const str - } - - static int sun4i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, -- const struct snd_pcm_hw_params *params) -+ unsigned int channels, unsigned int slots, -+ unsigned int slot_width) - { -- unsigned int channels = params_channels(params); -- - /* Map the channels for playback and capture */ - regmap_write(i2s->regmap, SUN4I_I2S_TX_CHAN_MAP_REG, 0x76543210); - regmap_write(i2s->regmap, SUN4I_I2S_RX_CHAN_MAP_REG, 0x00003210); -@@ -419,15 +425,11 @@ static int sun4i_i2s_set_chan_cfg(const - } - - static int sun8i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, -- const struct snd_pcm_hw_params *params) -+ unsigned int channels, unsigned int slots, -+ unsigned int slot_width) - { -- unsigned int channels = params_channels(params); -- unsigned int slots = channels; - unsigned int lrck_period; - -- if (i2s->slots) -- slots = i2s->slots; -- - /* Map the channels for playback and capture */ - regmap_write(i2s->regmap, SUN8I_I2S_TX_CHAN_MAP_REG, 0x76543210); - regmap_write(i2s->regmap, SUN8I_I2S_RX_CHAN_MAP_REG, 0x76543210); -@@ -450,13 +452,13 @@ static int sun8i_i2s_set_chan_cfg(const - switch (i2s->format & SND_SOC_DAIFMT_FORMAT_MASK) { - case SND_SOC_DAIFMT_DSP_A: - case SND_SOC_DAIFMT_DSP_B: -- lrck_period = params_physical_width(params) * slots; -+ lrck_period = slot_width * slots; - break; - - case SND_SOC_DAIFMT_LEFT_J: - case SND_SOC_DAIFMT_RIGHT_J: - case SND_SOC_DAIFMT_I2S: -- lrck_period = params_physical_width(params); -+ lrck_period = slot_width; - break; - - default: -@@ -482,7 +484,9 @@ static int sun4i_i2s_hw_params(struct sn - unsigned int word_size = params_width(params); - unsigned int slot_width = params_physical_width(params); - unsigned int channels = params_channels(params); -+ - unsigned int slots = channels; -+ - int ret, sr, wss; - u32 width; - -@@ -492,7 +496,7 @@ static int sun4i_i2s_hw_params(struct sn - if (i2s->slot_width) - slot_width = i2s->slot_width; - -- ret = i2s->variant->set_chan_cfg(i2s, params); -+ ret = i2s->variant->set_chan_cfg(i2s, channels, slots, slot_width); - if (ret < 0) { - dev_err(dai->dev, "Invalid channel configuration\n"); - return ret; diff --git a/projects/Allwinner/patches/linux/crust/0025-Revert-clk-qcom-Support-protected-clocks-property.patch b/projects/Allwinner/patches/linux/0003-Revert-clk-qcom-Support-protected-clocks-property.patch similarity index 100% rename from projects/Allwinner/patches/linux/crust/0025-Revert-clk-qcom-Support-protected-clocks-property.patch rename to projects/Allwinner/patches/linux/0003-Revert-clk-qcom-Support-protected-clocks-property.patch diff --git a/projects/Allwinner/patches/linux/0004-ASoC-sun4i-i2s-Add-support-for-H6-I2S.patch b/projects/Allwinner/patches/linux/0004-ASoC-sun4i-i2s-Add-support-for-H6-I2S.patch deleted file mode 100644 index a1c67052ce..0000000000 --- a/projects/Allwinner/patches/linux/0004-ASoC-sun4i-i2s-Add-support-for-H6-I2S.patch +++ /dev/null @@ -1,295 +0,0 @@ -From 8ff0df5dffe58a2d1595a6e59ccd5ce63d6bf0e5 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Fri, 30 Oct 2020 15:46:36 +0100 -Subject: [PATCH 04/44] ASoC: sun4i-i2s: Add support for H6 I2S -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -H6 I2S is very similar to that in H3, except it supports up to 16 -channels. - -Signed-off-by: Jernej Skrabec -Signed-off-by: Marcus Cooper -Reviewed-by: Chen-Yu Tsai -Acked-by: Maxime Ripard -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-4-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 222 ++++++++++++++++++++++++++++++++++++ - 1 file changed, 222 insertions(+) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -124,6 +124,21 @@ - #define SUN8I_I2S_RX_CHAN_SEL_REG 0x54 - #define SUN8I_I2S_RX_CHAN_MAP_REG 0x58 - -+/* Defines required for sun50i-h6 support */ -+#define SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET_MASK GENMASK(21, 20) -+#define SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET(offset) ((offset) << 20) -+#define SUN50I_H6_I2S_TX_CHAN_SEL_MASK GENMASK(19, 16) -+#define SUN50I_H6_I2S_TX_CHAN_SEL(chan) ((chan - 1) << 16) -+#define SUN50I_H6_I2S_TX_CHAN_EN_MASK GENMASK(15, 0) -+#define SUN50I_H6_I2S_TX_CHAN_EN(num_chan) (((1 << num_chan) - 1)) -+ -+#define SUN50I_H6_I2S_TX_CHAN_MAP0_REG 0x44 -+#define SUN50I_H6_I2S_TX_CHAN_MAP1_REG 0x48 -+ -+#define SUN50I_H6_I2S_RX_CHAN_SEL_REG 0x64 -+#define SUN50I_H6_I2S_RX_CHAN_MAP0_REG 0x68 -+#define SUN50I_H6_I2S_RX_CHAN_MAP1_REG 0x6C -+ - struct sun4i_i2s; - - /** -@@ -476,6 +491,60 @@ static int sun8i_i2s_set_chan_cfg(const - return 0; - } - -+static int sun50i_h6_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, -+ unsigned int channels, unsigned int slots, -+ unsigned int slot_width) -+{ -+ unsigned int lrck_period; -+ -+ /* Map the channels for playback and capture */ -+ regmap_write(i2s->regmap, SUN50I_H6_I2S_TX_CHAN_MAP0_REG, 0xFEDCBA98); -+ regmap_write(i2s->regmap, SUN50I_H6_I2S_TX_CHAN_MAP1_REG, 0x76543210); -+ regmap_write(i2s->regmap, SUN50I_H6_I2S_RX_CHAN_MAP0_REG, 0xFEDCBA98); -+ regmap_write(i2s->regmap, SUN50I_H6_I2S_RX_CHAN_MAP1_REG, 0x76543210); -+ -+ /* Configure the channels */ -+ regmap_update_bits(i2s->regmap, SUN8I_I2S_TX_CHAN_SEL_REG, -+ SUN50I_H6_I2S_TX_CHAN_SEL_MASK, -+ SUN50I_H6_I2S_TX_CHAN_SEL(channels)); -+ regmap_update_bits(i2s->regmap, SUN50I_H6_I2S_RX_CHAN_SEL_REG, -+ SUN50I_H6_I2S_TX_CHAN_SEL_MASK, -+ SUN50I_H6_I2S_TX_CHAN_SEL(channels)); -+ -+ regmap_update_bits(i2s->regmap, SUN8I_I2S_CHAN_CFG_REG, -+ SUN8I_I2S_CHAN_CFG_TX_SLOT_NUM_MASK, -+ SUN8I_I2S_CHAN_CFG_TX_SLOT_NUM(channels)); -+ regmap_update_bits(i2s->regmap, SUN8I_I2S_CHAN_CFG_REG, -+ SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM_MASK, -+ SUN8I_I2S_CHAN_CFG_RX_SLOT_NUM(channels)); -+ -+ switch (i2s->format & SND_SOC_DAIFMT_FORMAT_MASK) { -+ case SND_SOC_DAIFMT_DSP_A: -+ case SND_SOC_DAIFMT_DSP_B: -+ lrck_period = slot_width * slots; -+ break; -+ -+ case SND_SOC_DAIFMT_LEFT_J: -+ case SND_SOC_DAIFMT_RIGHT_J: -+ case SND_SOC_DAIFMT_I2S: -+ lrck_period = slot_width; -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT0_REG, -+ SUN8I_I2S_FMT0_LRCK_PERIOD_MASK, -+ SUN8I_I2S_FMT0_LRCK_PERIOD(lrck_period)); -+ -+ regmap_update_bits(i2s->regmap, SUN8I_I2S_TX_CHAN_SEL_REG, -+ SUN50I_H6_I2S_TX_CHAN_EN_MASK, -+ SUN50I_H6_I2S_TX_CHAN_EN(channels)); -+ -+ return 0; -+} -+ - static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream, - struct snd_pcm_hw_params *params, - struct snd_soc_dai *dai) -@@ -703,6 +772,108 @@ static int sun8i_i2s_set_soc_fmt(const s - return 0; - } - -+static int sun50i_h6_i2s_set_soc_fmt(const struct sun4i_i2s *i2s, -+ unsigned int fmt) -+{ -+ u32 mode, val; -+ u8 offset; -+ -+ /* -+ * DAI clock polarity -+ * -+ * The setup for LRCK contradicts the datasheet, but under a -+ * scope it's clear that the LRCK polarity is reversed -+ * compared to the expected polarity on the bus. -+ */ -+ switch (fmt & SND_SOC_DAIFMT_INV_MASK) { -+ case SND_SOC_DAIFMT_IB_IF: -+ /* Invert both clocks */ -+ val = SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED; -+ break; -+ case SND_SOC_DAIFMT_IB_NF: -+ /* Invert bit clock */ -+ val = SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED | -+ SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED; -+ break; -+ case SND_SOC_DAIFMT_NB_IF: -+ /* Invert frame clock */ -+ val = 0; -+ break; -+ case SND_SOC_DAIFMT_NB_NF: -+ val = SUN8I_I2S_FMT0_LRCLK_POLARITY_INVERTED; -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT0_REG, -+ SUN8I_I2S_FMT0_LRCLK_POLARITY_MASK | -+ SUN8I_I2S_FMT0_BCLK_POLARITY_MASK, -+ val); -+ -+ /* DAI Mode */ -+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { -+ case SND_SOC_DAIFMT_DSP_A: -+ mode = SUN8I_I2S_CTRL_MODE_PCM; -+ offset = 1; -+ break; -+ -+ case SND_SOC_DAIFMT_DSP_B: -+ mode = SUN8I_I2S_CTRL_MODE_PCM; -+ offset = 0; -+ break; -+ -+ case SND_SOC_DAIFMT_I2S: -+ mode = SUN8I_I2S_CTRL_MODE_LEFT; -+ offset = 1; -+ break; -+ -+ case SND_SOC_DAIFMT_LEFT_J: -+ mode = SUN8I_I2S_CTRL_MODE_LEFT; -+ offset = 0; -+ break; -+ -+ case SND_SOC_DAIFMT_RIGHT_J: -+ mode = SUN8I_I2S_CTRL_MODE_RIGHT; -+ offset = 0; -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG, -+ SUN8I_I2S_CTRL_MODE_MASK, mode); -+ regmap_update_bits(i2s->regmap, SUN8I_I2S_TX_CHAN_SEL_REG, -+ SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET_MASK, -+ SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET(offset)); -+ regmap_update_bits(i2s->regmap, SUN50I_H6_I2S_RX_CHAN_SEL_REG, -+ SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET_MASK, -+ SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET(offset)); -+ -+ /* DAI clock master masks */ -+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { -+ case SND_SOC_DAIFMT_CBS_CFS: -+ /* BCLK and LRCLK master */ -+ val = SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT; -+ break; -+ -+ case SND_SOC_DAIFMT_CBM_CFM: -+ /* BCLK and LRCLK slave */ -+ val = 0; -+ break; -+ -+ default: -+ return -EINVAL; -+ } -+ -+ regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG, -+ SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT, -+ val); -+ -+ return 0; -+} -+ - static int sun4i_i2s_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) - { - struct sun4i_i2s *i2s = snd_soc_dai_get_drvdata(dai); -@@ -983,6 +1154,22 @@ static const struct reg_default sun8i_i2 - { SUN8I_I2S_RX_CHAN_MAP_REG, 0x00000000 }, - }; - -+static const struct reg_default sun50i_h6_i2s_reg_defaults[] = { -+ { SUN4I_I2S_CTRL_REG, 0x00060000 }, -+ { SUN4I_I2S_FMT0_REG, 0x00000033 }, -+ { SUN4I_I2S_FMT1_REG, 0x00000030 }, -+ { SUN4I_I2S_FIFO_CTRL_REG, 0x000400f0 }, -+ { SUN4I_I2S_DMA_INT_CTRL_REG, 0x00000000 }, -+ { SUN4I_I2S_CLK_DIV_REG, 0x00000000 }, -+ { SUN8I_I2S_CHAN_CFG_REG, 0x00000000 }, -+ { SUN8I_I2S_TX_CHAN_SEL_REG, 0x00000000 }, -+ { SUN50I_H6_I2S_TX_CHAN_MAP0_REG, 0x00000000 }, -+ { SUN50I_H6_I2S_TX_CHAN_MAP1_REG, 0x00000000 }, -+ { SUN50I_H6_I2S_RX_CHAN_SEL_REG, 0x00000000 }, -+ { SUN50I_H6_I2S_RX_CHAN_MAP0_REG, 0x00000000 }, -+ { SUN50I_H6_I2S_RX_CHAN_MAP1_REG, 0x00000000 }, -+}; -+ - static const struct regmap_config sun4i_i2s_regmap_config = { - .reg_bits = 32, - .reg_stride = 4, -@@ -1010,6 +1197,19 @@ static const struct regmap_config sun8i_ - .volatile_reg = sun8i_i2s_volatile_reg, - }; - -+static const struct regmap_config sun50i_h6_i2s_regmap_config = { -+ .reg_bits = 32, -+ .reg_stride = 4, -+ .val_bits = 32, -+ .max_register = SUN50I_H6_I2S_RX_CHAN_MAP1_REG, -+ .cache_type = REGCACHE_FLAT, -+ .reg_defaults = sun50i_h6_i2s_reg_defaults, -+ .num_reg_defaults = ARRAY_SIZE(sun50i_h6_i2s_reg_defaults), -+ .writeable_reg = sun4i_i2s_wr_reg, -+ .readable_reg = sun8i_i2s_rd_reg, -+ .volatile_reg = sun8i_i2s_volatile_reg, -+}; -+ - static int sun4i_i2s_runtime_resume(struct device *dev) - { - struct sun4i_i2s *i2s = dev_get_drvdata(dev); -@@ -1168,6 +1368,24 @@ static const struct sun4i_i2s_quirks sun - .set_fmt = sun4i_i2s_set_soc_fmt, - }; - -+static const struct sun4i_i2s_quirks sun50i_h6_i2s_quirks = { -+ .has_reset = true, -+ .reg_offset_txdata = SUN8I_I2S_FIFO_TX_REG, -+ .sun4i_i2s_regmap = &sun50i_h6_i2s_regmap_config, -+ .field_clkdiv_mclk_en = REG_FIELD(SUN4I_I2S_CLK_DIV_REG, 8, 8), -+ .field_fmt_wss = REG_FIELD(SUN4I_I2S_FMT0_REG, 0, 2), -+ .field_fmt_sr = REG_FIELD(SUN4I_I2S_FMT0_REG, 4, 6), -+ .bclk_dividers = sun8i_i2s_clk_div, -+ .num_bclk_dividers = ARRAY_SIZE(sun8i_i2s_clk_div), -+ .mclk_dividers = sun8i_i2s_clk_div, -+ .num_mclk_dividers = ARRAY_SIZE(sun8i_i2s_clk_div), -+ .get_bclk_parent_rate = sun8i_i2s_get_bclk_parent_rate, -+ .get_sr = sun8i_i2s_get_sr_wss, -+ .get_wss = sun8i_i2s_get_sr_wss, -+ .set_chan_cfg = sun50i_h6_i2s_set_chan_cfg, -+ .set_fmt = sun50i_h6_i2s_set_soc_fmt, -+}; -+ - static int sun4i_i2s_init_regmap_fields(struct device *dev, - struct sun4i_i2s *i2s) - { -@@ -1337,6 +1555,10 @@ static const struct of_device_id sun4i_i - .compatible = "allwinner,sun50i-a64-codec-i2s", - .data = &sun50i_a64_codec_i2s_quirks, - }, -+ { -+ .compatible = "allwinner,sun50i-h6-i2s", -+ .data = &sun50i_h6_i2s_quirks, -+ }, - {} - }; - MODULE_DEVICE_TABLE(of, sun4i_i2s_match); diff --git a/projects/Allwinner/patches/linux/crust/0027-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch b/projects/Allwinner/patches/linux/0004-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch similarity index 95% rename from projects/Allwinner/patches/linux/crust/0027-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch rename to projects/Allwinner/patches/linux/0004-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch index 7bf2916963..f37cf9417f 100644 --- a/projects/Allwinner/patches/linux/crust/0027-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch +++ b/projects/Allwinner/patches/linux/0004-DO-NOT-MERGE-ARM-dts-sunxi-h3-h5-Protect-SCP-clocks.patch @@ -10,7 +10,7 @@ Signed-off-by: Samuel Holland --- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi +++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -@@ -406,6 +406,7 @@ +@@ -388,6 +388,7 @@ reg = <0x01c20000 0x400>; clocks = <&osc24M>, <&rtc 0>; clock-names = "hosc", "losc"; @@ -18,7 +18,7 @@ Signed-off-by: Samuel Holland #clock-cells = <1>; #reset-cells = <1>; }; -@@ -894,6 +895,7 @@ +@@ -876,6 +877,7 @@ clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, <&ccu CLK_PLL_PERIPH0>; clock-names = "hosc", "losc", "iosc", "pll-periph"; diff --git a/projects/Allwinner/patches/linux/0005-ASoC-sun4i-i2s-Change-get_sr-and-get_wss-to-be-more-.patch b/projects/Allwinner/patches/linux/0005-ASoC-sun4i-i2s-Change-get_sr-and-get_wss-to-be-more-.patch deleted file mode 100644 index 731610a0f7..0000000000 --- a/projects/Allwinner/patches/linux/0005-ASoC-sun4i-i2s-Change-get_sr-and-get_wss-to-be-more-.patch +++ /dev/null @@ -1,134 +0,0 @@ -From aec30a56043a890b75440bb8c9673a07166cf104 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= -Date: Fri, 30 Oct 2020 15:46:37 +0100 -Subject: [PATCH 05/44] ASoC: sun4i-i2s: Change get_sr() and get_wss() to be - more explicit -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We are actually using a complex formula to just return a bunch of -simple values. Also this formula is wrong for sun4i when calling -get_wss() the function return 4 instead of 3. - -Replace this with a simpler switch case. - -Also drop the i2s params which is unused and return a simple int as -returning an error code could be out of range for an s8 and there is -no optim to return a s8 here. - -Fixes: 619c15f7fac9 ("ASoC: sun4i-i2s: Change SR and WSS computation") -Reviewed-by: Chen-Yu Tsai -Acked-by: Maxime Ripard -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-5-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 75 +++++++++++++++++++++++-------------- - 1 file changed, 47 insertions(+), 28 deletions(-) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -175,8 +175,8 @@ struct sun4i_i2s_quirks { - unsigned int num_mclk_dividers; - - unsigned long (*get_bclk_parent_rate)(const struct sun4i_i2s *); -- s8 (*get_sr)(const struct sun4i_i2s *, int); -- s8 (*get_wss)(const struct sun4i_i2s *, int); -+ int (*get_sr)(unsigned int width); -+ int (*get_wss)(unsigned int width); - - /* - * In the set_chan_cfg() function pointer: -@@ -387,37 +387,56 @@ static int sun4i_i2s_set_clk_rate(struct - return 0; - } - --static s8 sun4i_i2s_get_sr(const struct sun4i_i2s *i2s, int width) -+static int sun4i_i2s_get_sr(unsigned int width) - { -- if (width < 16 || width > 24) -- return -EINVAL; -- -- if (width % 4) -- return -EINVAL; -+ switch (width) { -+ case 16: -+ return 0; -+ case 20: -+ return 1; -+ case 24: -+ return 2; -+ } - -- return (width - 16) / 4; -+ return -EINVAL; - } - --static s8 sun4i_i2s_get_wss(const struct sun4i_i2s *i2s, int width) -+static int sun4i_i2s_get_wss(unsigned int width) - { -- if (width < 16 || width > 32) -- return -EINVAL; -- -- if (width % 4) -- return -EINVAL; -+ switch (width) { -+ case 16: -+ return 0; -+ case 20: -+ return 1; -+ case 24: -+ return 2; -+ case 32: -+ return 3; -+ } - -- return (width - 16) / 4; -+ return -EINVAL; - } - --static s8 sun8i_i2s_get_sr_wss(const struct sun4i_i2s *i2s, int width) -+static int sun8i_i2s_get_sr_wss(unsigned int width) - { -- if (width % 4) -- return -EINVAL; -- -- if (width < 8 || width > 32) -- return -EINVAL; -+ switch (width) { -+ case 8: -+ return 1; -+ case 12: -+ return 2; -+ case 16: -+ return 3; -+ case 20: -+ return 4; -+ case 24: -+ return 5; -+ case 28: -+ return 6; -+ case 32: -+ return 7; -+ } - -- return (width - 8) / 4 + 1; -+ return -EINVAL; - } - - static int sun4i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, -@@ -582,11 +601,11 @@ static int sun4i_i2s_hw_params(struct sn - } - i2s->playback_dma_data.addr_width = width; - -- sr = i2s->variant->get_sr(i2s, word_size); -+ sr = i2s->variant->get_sr(word_size); - if (sr < 0) - return -EINVAL; - -- wss = i2s->variant->get_wss(i2s, slot_width); -+ wss = i2s->variant->get_wss(slot_width); - if (wss < 0) - return -EINVAL; - diff --git a/projects/Allwinner/patches/linux/crust/0028-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch b/projects/Allwinner/patches/linux/0005-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch similarity index 95% rename from projects/Allwinner/patches/linux/crust/0028-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch rename to projects/Allwinner/patches/linux/0005-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch index 66d37bd47b..60d4395dab 100644 --- a/projects/Allwinner/patches/linux/crust/0028-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch +++ b/projects/Allwinner/patches/linux/0005-DO-NOT-MERGE-arm64-dts-allwinner-a64-Protect-SCP-clo.patch @@ -10,7 +10,7 @@ Signed-off-by: Samuel Holland --- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -@@ -637,6 +637,7 @@ +@@ -641,6 +641,7 @@ reg = <0x01c20000 0x400>; clocks = <&osc24M>, <&rtc 0>; clock-names = "hosc", "losc"; @@ -18,7 +18,7 @@ Signed-off-by: Samuel Holland #clock-cells = <1>; #reset-cells = <1>; }; -@@ -1229,6 +1230,7 @@ +@@ -1233,6 +1234,7 @@ clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, <&ccu CLK_PLL_PERIPH0>; clock-names = "hosc", "losc", "iosc", "pll-periph"; diff --git a/projects/Allwinner/patches/linux/0006-ASoC-sun4i-i2s-Set-sign-extend-sample.patch b/projects/Allwinner/patches/linux/0006-ASoC-sun4i-i2s-Set-sign-extend-sample.patch deleted file mode 100644 index b4e6c89dec..0000000000 --- a/projects/Allwinner/patches/linux/0006-ASoC-sun4i-i2s-Set-sign-extend-sample.patch +++ /dev/null @@ -1,86 +0,0 @@ -From fe1ae019879d51633d8dcd705117c70b701b77e9 Mon Sep 17 00:00:00 2001 -From: Marcus Cooper -Date: Fri, 30 Oct 2020 15:46:38 +0100 -Subject: [PATCH 06/44] ASoC: sun4i-i2s: Set sign extend sample -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -On the newer SoCs such as the H3 and A64 this is set by default -to transfer a 0 after each sample in each slot. However the A10 -and A20 SoCs that this driver was developed on had a default -setting where it padded the audio gain with zeros. - -This isn't a problem while we have only support for 16bit audio -but with larger sample resolution rates in the pipeline then SEXT -bits should be cleared so that they also pad at the LSB. Without -this the audio gets distorted. - -Set sign extend sample for all the sunxi generations even if they -are not affected. This will keep consistency and avoid relying on -default. - -Signed-off-by: Marcus Cooper -Reviewed-by: Chen-Yu Tsai -Acked-by: Maxime Ripard -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-6-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -48,6 +48,9 @@ - #define SUN4I_I2S_FMT0_FMT_I2S (0 << 0) - - #define SUN4I_I2S_FMT1_REG 0x08 -+#define SUN4I_I2S_FMT1_REG_SEXT_MASK BIT(8) -+#define SUN4I_I2S_FMT1_REG_SEXT(sext) ((sext) << 8) -+ - #define SUN4I_I2S_FIFO_TX_REG 0x0c - #define SUN4I_I2S_FIFO_RX_REG 0x10 - -@@ -105,6 +108,9 @@ - #define SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED (1 << 7) - #define SUN8I_I2S_FMT0_BCLK_POLARITY_NORMAL (0 << 7) - -+#define SUN8I_I2S_FMT1_REG_SEXT_MASK GENMASK(5, 4) -+#define SUN8I_I2S_FMT1_REG_SEXT(sext) ((sext) << 4) -+ - #define SUN8I_I2S_INT_STA_REG 0x0c - #define SUN8I_I2S_FIFO_TX_REG 0x20 - -@@ -686,6 +692,7 @@ static int sun4i_i2s_set_soc_fmt(const s - } - regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG, - SUN4I_I2S_CTRL_MODE_MASK, val); -+ - return 0; - } - -@@ -788,6 +795,11 @@ static int sun8i_i2s_set_soc_fmt(const s - SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT, - val); - -+ /* Set sign extension to pad out LSB with 0 */ -+ regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT1_REG, -+ SUN8I_I2S_FMT1_REG_SEXT_MASK, -+ SUN8I_I2S_FMT1_REG_SEXT(0)); -+ - return 0; - } - -@@ -890,6 +902,11 @@ static int sun50i_h6_i2s_set_soc_fmt(con - SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT, - val); - -+ /* Set sign extension to pad out LSB with 0 */ -+ regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT1_REG, -+ SUN8I_I2S_FMT1_REG_SEXT_MASK, -+ SUN8I_I2S_FMT1_REG_SEXT(0)); -+ - return 0; - } - diff --git a/projects/Allwinner/patches/linux/crust/0029-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch b/projects/Allwinner/patches/linux/0006-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch similarity index 95% rename from projects/Allwinner/patches/linux/crust/0029-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch rename to projects/Allwinner/patches/linux/0006-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch index a33dd3ce4d..7a05d092e9 100644 --- a/projects/Allwinner/patches/linux/crust/0029-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch +++ b/projects/Allwinner/patches/linux/0006-DO-NOT-MERGE-arm64-dts-allwinner-h6-Protect-SCP-cloc.patch @@ -10,7 +10,7 @@ Signed-off-by: Samuel Holland --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -241,6 +241,7 @@ +@@ -230,6 +230,7 @@ reg = <0x03001000 0x1000>; clocks = <&osc24M>, <&rtc 0>, <&rtc 2>; clock-names = "hosc", "losc", "iosc"; @@ -18,7 +18,7 @@ Signed-off-by: Samuel Holland #clock-cells = <1>; #reset-cells = <1>; }; -@@ -920,6 +921,7 @@ +@@ -916,6 +917,7 @@ clocks = <&osc24M>, <&rtc 0>, <&rtc 2>, <&ccu CLK_PLL_PERIPH0>; clock-names = "hosc", "losc", "iosc", "pll-periph"; diff --git a/projects/Allwinner/patches/linux/0007-ASoC-sun4i-i2s-Add-20-and-24-bit-support.patch b/projects/Allwinner/patches/linux/0007-ASoC-sun4i-i2s-Add-20-and-24-bit-support.patch deleted file mode 100644 index 0205308b31..0000000000 --- a/projects/Allwinner/patches/linux/0007-ASoC-sun4i-i2s-Add-20-and-24-bit-support.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 9c2121fe514f12c830bceea7b33872fa67af3e97 Mon Sep 17 00:00:00 2001 -From: Marcus Cooper -Date: Fri, 30 Oct 2020 15:46:39 +0100 -Subject: [PATCH 07/44] ASoC: sun4i-i2s: Add 20 and 24 bit support -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Extend the functionality of the driver to include support of 20 and -24 bits per sample. - -Signed-off-by: Marcus Cooper -Acked-by: Maxime Ripard -Reviewed-by: Chen-Yu Tsai -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-7-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -600,6 +600,9 @@ static int sun4i_i2s_hw_params(struct sn - case 16: - width = DMA_SLAVE_BUSWIDTH_2_BYTES; - break; -+ case 32: -+ width = DMA_SLAVE_BUSWIDTH_4_BYTES; -+ break; - default: - dev_err(dai->dev, "Unsupported physical sample width: %d\n", - params_physical_width(params)); -@@ -1081,6 +1084,10 @@ static int sun4i_i2s_dai_probe(struct sn - return 0; - } - -+#define SUN4I_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ -+ SNDRV_PCM_FMTBIT_S20_LE | \ -+ SNDRV_PCM_FMTBIT_S24_LE) -+ - static struct snd_soc_dai_driver sun4i_i2s_dai = { - .probe = sun4i_i2s_dai_probe, - .capture = { -@@ -1088,14 +1095,14 @@ static struct snd_soc_dai_driver sun4i_i - .channels_min = 1, - .channels_max = 8, - .rates = SNDRV_PCM_RATE_8000_192000, -- .formats = SNDRV_PCM_FMTBIT_S16_LE, -+ .formats = SUN4I_FORMATS, - }, - .playback = { - .stream_name = "Playback", - .channels_min = 1, - .channels_max = 8, - .rates = SNDRV_PCM_RATE_8000_192000, -- .formats = SNDRV_PCM_FMTBIT_S16_LE, -+ .formats = SUN4I_FORMATS, - }, - .ops = &sun4i_i2s_dai_ops, - .symmetric_rates = 1, diff --git a/projects/Allwinner/patches/linux/crust/0034-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch b/projects/Allwinner/patches/linux/0007-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch similarity index 84% rename from projects/Allwinner/patches/linux/crust/0034-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch rename to projects/Allwinner/patches/linux/0007-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch index 9edaa6fe85..3abf3b50b2 100644 --- a/projects/Allwinner/patches/linux/crust/0034-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch +++ b/projects/Allwinner/patches/linux/0007-rtc-sun6i-Allow-RTC-wakeup-after-shutdown.patch @@ -15,7 +15,7 @@ Signed-off-by: Samuel Holland --- a/drivers/rtc/rtc-sun6i.c +++ b/drivers/rtc/rtc-sun6i.c -@@ -639,7 +639,6 @@ static const struct rtc_class_ops sun6i_ +@@ -641,7 +641,6 @@ static const struct rtc_class_ops sun6i_ .alarm_irq_enable = sun6i_rtc_alarm_irq_enable }; @@ -23,7 +23,7 @@ Signed-off-by: Samuel Holland /* Enable IRQ wake on suspend, to wake up from RTC. */ static int sun6i_rtc_suspend(struct device *dev) { -@@ -652,7 +651,7 @@ static int sun6i_rtc_suspend(struct devi +@@ -654,7 +653,7 @@ static int sun6i_rtc_suspend(struct devi } /* Disable IRQ wake on resume. */ @@ -32,7 +32,7 @@ Signed-off-by: Samuel Holland { struct sun6i_rtc_dev *chip = dev_get_drvdata(dev); -@@ -661,7 +660,6 @@ static int sun6i_rtc_resume(struct devic +@@ -663,7 +662,6 @@ static int sun6i_rtc_resume(struct devic return 0; } @@ -40,7 +40,7 @@ Signed-off-by: Samuel Holland static SIMPLE_DEV_PM_OPS(sun6i_rtc_pm_ops, sun6i_rtc_suspend, sun6i_rtc_resume); -@@ -733,6 +731,11 @@ static int sun6i_rtc_probe(struct platfo +@@ -735,6 +733,11 @@ static int sun6i_rtc_probe(struct platfo return 0; } @@ -52,7 +52,7 @@ Signed-off-by: Samuel Holland /* * As far as RTC functionality goes, all models are the same. The * datasheets claim that different models have different number of -@@ -753,6 +756,7 @@ MODULE_DEVICE_TABLE(of, sun6i_rtc_dt_ids +@@ -755,6 +758,7 @@ MODULE_DEVICE_TABLE(of, sun6i_rtc_dt_ids static struct platform_driver sun6i_rtc_driver = { .probe = sun6i_rtc_probe, diff --git a/projects/Allwinner/patches/linux/0008-ASoC-sun4i-i2s-Fix-sun8i-volatile-regs.patch b/projects/Allwinner/patches/linux/0008-ASoC-sun4i-i2s-Fix-sun8i-volatile-regs.patch deleted file mode 100644 index 8c4dd63320..0000000000 --- a/projects/Allwinner/patches/linux/0008-ASoC-sun4i-i2s-Fix-sun8i-volatile-regs.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 9f0cbed8e957216d58a2dd5c9c8e795ec39004ad Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= -Date: Fri, 30 Oct 2020 15:46:40 +0100 -Subject: [PATCH 08/44] ASoC: sun4i-i2s: Fix sun8i volatile regs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The FIFO TX reg is volatile and sun8i i2s register -mapping is different from sun4i. - -Even if in this case it's doesn't create an issue, -Avoid setting some regs that are undefined in sun8i. - -Acked-by: Maxime Ripard -Reviewed-by: Chen-Yu Tsai -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-8-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -1162,12 +1162,19 @@ static bool sun8i_i2s_rd_reg(struct devi - - static bool sun8i_i2s_volatile_reg(struct device *dev, unsigned int reg) - { -- if (reg == SUN8I_I2S_INT_STA_REG) -+ switch (reg) { -+ case SUN4I_I2S_FIFO_CTRL_REG: -+ case SUN4I_I2S_FIFO_RX_REG: -+ case SUN4I_I2S_FIFO_STA_REG: -+ case SUN4I_I2S_RX_CNT_REG: -+ case SUN4I_I2S_TX_CNT_REG: -+ case SUN8I_I2S_FIFO_TX_REG: -+ case SUN8I_I2S_INT_STA_REG: - return true; -- if (reg == SUN8I_I2S_FIFO_TX_REG) -- return false; - -- return sun4i_i2s_volatile_reg(dev, reg); -+ default: -+ return false; -+ } - } - - static const struct reg_default sun4i_i2s_reg_defaults[] = { diff --git a/projects/Allwinner/patches/linux/crust/0035-input-sun4i-lradc-keys-Add-wakup-support.patch b/projects/Allwinner/patches/linux/0008-input-sun4i-lradc-keys-Add-wakup-support.patch similarity index 100% rename from projects/Allwinner/patches/linux/crust/0035-input-sun4i-lradc-keys-Add-wakup-support.patch rename to projects/Allwinner/patches/linux/0008-input-sun4i-lradc-keys-Add-wakup-support.patch diff --git a/projects/Allwinner/patches/linux/0009-ASoC-sun4i-i2s-Fix-setting-of-FIFO-modes.patch b/projects/Allwinner/patches/linux/0009-ASoC-sun4i-i2s-Fix-setting-of-FIFO-modes.patch deleted file mode 100644 index 14cc889b76..0000000000 --- a/projects/Allwinner/patches/linux/0009-ASoC-sun4i-i2s-Fix-setting-of-FIFO-modes.patch +++ /dev/null @@ -1,53 +0,0 @@ -From de8ff7b3ac4736f5aa0c55968170bd449e46c88f Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Fri, 30 Oct 2020 15:46:41 +0100 -Subject: [PATCH 09/44] ASoC: sun4i-i2s: Fix setting of FIFO modes -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Because SUN4I_I2S_FIFO_CTRL_REG is volatile, writes done while the -regmap is cache-only are ignored. To work around this, move the -configuration to a callback that runs while the ASoC core has a -runtime PM reference to the device. - -Signed-off-by: Samuel Holland -Reviewed-by: Chen-Yu Tsai -Acked-by: Maxime Ripard -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-9-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -596,6 +596,13 @@ static int sun4i_i2s_hw_params(struct sn - return ret; - } - -+ /* Set significant bits in our FIFOs */ -+ regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG, -+ SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK | -+ SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK, -+ SUN4I_I2S_FIFO_CTRL_TX_MODE(1) | -+ SUN4I_I2S_FIFO_CTRL_RX_MODE(1)); -+ - switch (params_physical_width(params)) { - case 16: - width = DMA_SLAVE_BUSWIDTH_2_BYTES; -@@ -924,13 +931,6 @@ static int sun4i_i2s_set_fmt(struct snd_ - return ret; - } - -- /* Set significant bits in our FIFOs */ -- regmap_update_bits(i2s->regmap, SUN4I_I2S_FIFO_CTRL_REG, -- SUN4I_I2S_FIFO_CTRL_TX_MODE_MASK | -- SUN4I_I2S_FIFO_CTRL_RX_MODE_MASK, -- SUN4I_I2S_FIFO_CTRL_TX_MODE(1) | -- SUN4I_I2S_FIFO_CTRL_RX_MODE(1)); -- - i2s->format = fmt; - - return 0; diff --git a/projects/Allwinner/patches/linux/crust/0036-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch b/projects/Allwinner/patches/linux/0009-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch similarity index 93% rename from projects/Allwinner/patches/linux/crust/0036-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch rename to projects/Allwinner/patches/linux/0009-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch index 74ee6fb06c..cbf3f66f77 100644 --- a/projects/Allwinner/patches/linux/crust/0036-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch +++ b/projects/Allwinner/patches/linux/0009-firmware-arm_scpi-Support-unidirectional-mailbox-cha.patch @@ -38,7 +38,7 @@ Signed-off-by: Samuel Holland if (ret < 0 || !rx_buf) goto out; -@@ -854,8 +855,13 @@ static void scpi_free_channels(void *dat +@@ -856,8 +857,13 @@ static void scpi_free_channels(void *dat struct scpi_drvinfo *info = data; int i; @@ -54,7 +54,7 @@ Signed-off-by: Samuel Holland } static int scpi_remove(struct platform_device *pdev) -@@ -903,6 +909,7 @@ static int scpi_probe(struct platform_de +@@ -905,6 +911,7 @@ static int scpi_probe(struct platform_de struct resource res; struct device *dev = &pdev->dev; struct device_node *np = dev->of_node; @@ -62,7 +62,7 @@ Signed-off-by: Samuel Holland scpi_info = devm_kzalloc(dev, sizeof(*scpi_info), GFP_KERNEL); if (!scpi_info) -@@ -916,6 +923,14 @@ static int scpi_probe(struct platform_de +@@ -918,6 +925,14 @@ static int scpi_probe(struct platform_de dev_err(dev, "no mboxes property in '%pOF'\n", np); return -ENODEV; } @@ -77,7 +77,7 @@ Signed-off-by: Samuel Holland scpi_info->channels = devm_kcalloc(dev, count, sizeof(struct scpi_chan), GFP_KERNEL); -@@ -961,15 +976,34 @@ static int scpi_probe(struct platform_de +@@ -963,15 +978,34 @@ static int scpi_probe(struct platform_de mutex_init(&pchan->xfers_lock); ret = scpi_alloc_xfer_list(dev, pchan); diff --git a/projects/Allwinner/patches/linux/crust/0037-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch b/projects/Allwinner/patches/linux/0010-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch similarity index 98% rename from projects/Allwinner/patches/linux/crust/0037-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch rename to projects/Allwinner/patches/linux/0010-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch index 26be20b79e..47f073405a 100644 --- a/projects/Allwinner/patches/linux/crust/0037-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch +++ b/projects/Allwinner/patches/linux/0010-ARM-dts-sunxi-h3-h5-Add-SCPI-protocol.patch @@ -34,7 +34,7 @@ Signed-off-by: Samuel Holland reg = <0x01d00000 0x80000>; --- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi +++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -@@ -123,6 +123,13 @@ +@@ -105,6 +105,13 @@ status = "disabled"; }; diff --git a/projects/Allwinner/patches/linux/0010-ASoC-sun4i-i2s-fix-coding-style-for-callback-definit.patch b/projects/Allwinner/patches/linux/0010-ASoC-sun4i-i2s-fix-coding-style-for-callback-definit.patch deleted file mode 100644 index 15899dd1e6..0000000000 --- a/projects/Allwinner/patches/linux/0010-ASoC-sun4i-i2s-fix-coding-style-for-callback-definit.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 82b0eb24d554180fdea8a254553dcce22085cc74 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= -Date: Fri, 30 Oct 2020 15:46:42 +0100 -Subject: [PATCH 10/44] ASoC: sun4i-i2s: fix coding-style for callback - definition -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Checkpatch script produces warning: -WARNING: function definition argument 'const struct sun4i_i2s *' -should also have an identifier name. - -Let's fix this by adding identifier name to get_bclk_parent_rate() -and set_fmt() callback definition. - -Acked-by: Maxime Ripard -Signed-off-by: Clément Péron -Link: https://lore.kernel.org/r/20201030144648.397824-10-peron.clem@gmail.com -Signed-off-by: Mark Brown ---- - sound/soc/sunxi/sun4i-i2s.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/sound/soc/sunxi/sun4i-i2s.c -+++ b/sound/soc/sunxi/sun4i-i2s.c -@@ -180,7 +180,7 @@ struct sun4i_i2s_quirks { - const struct sun4i_i2s_clk_div *mclk_dividers; - unsigned int num_mclk_dividers; - -- unsigned long (*get_bclk_parent_rate)(const struct sun4i_i2s *); -+ unsigned long (*get_bclk_parent_rate)(const struct sun4i_i2s *i2s); - int (*get_sr)(unsigned int width); - int (*get_wss)(unsigned int width); - -@@ -192,7 +192,7 @@ struct sun4i_i2s_quirks { - int (*set_chan_cfg)(const struct sun4i_i2s *i2s, - unsigned int channels, unsigned int slots, - unsigned int slot_width); -- int (*set_fmt)(const struct sun4i_i2s *, unsigned int); -+ int (*set_fmt)(const struct sun4i_i2s *i2s, unsigned int fmt); - }; - - struct sun4i_i2s { diff --git a/projects/Allwinner/patches/linux/0011-ARM-dts-sun8i-r40-Add-deinterlace-node.patch b/projects/Allwinner/patches/linux/0011-ARM-dts-sun8i-r40-Add-deinterlace-node.patch deleted file mode 100644 index ee4b752ba2..0000000000 --- a/projects/Allwinner/patches/linux/0011-ARM-dts-sun8i-r40-Add-deinterlace-node.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 51ebc019df15b46d109bafe7068ebb6fe0b266b5 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Wed, 6 Jan 2021 19:19:01 +0100 -Subject: [PATCH 11/44] ARM: dts: sun8i: r40: Add deinterlace node - -R40 contains deinterlace core compatible to that in H3. One peculiarity -is that RAM gate is shared with CSI1. User manual states it's separate -but that's not true. Shared gate was verified with BSP Linux code check -and with runtime tests (CPU crashed if CSI1 gate was not ungated). - -Signed-off-by: Jernej Skrabec -Signed-off-by: Maxime Ripard -Link: https://lore.kernel.org/r/20210106181901.1324075-3-jernej.skrabec@siol.net ---- - arch/arm/boot/dts/sun8i-r40.dtsi | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - ---- a/arch/arm/boot/dts/sun8i-r40.dtsi -+++ b/arch/arm/boot/dts/sun8i-r40.dtsi -@@ -190,6 +190,25 @@ - }; - }; - -+ deinterlace: deinterlace@1400000 { -+ compatible = "allwinner,sun8i-r40-deinterlace", -+ "allwinner,sun8i-h3-deinterlace"; -+ reg = <0x01400000 0x20000>; -+ clocks = <&ccu CLK_BUS_DEINTERLACE>, -+ <&ccu CLK_DEINTERLACE>, -+ /* -+ * NOTE: Contrary to what datasheet claims, -+ * DRAM deinterlace gate doesn't exist and -+ * it's shared with CSI1. -+ */ -+ <&ccu CLK_DRAM_CSI1>; -+ clock-names = "bus", "mod", "ram"; -+ resets = <&ccu RST_BUS_DEINTERLACE>; -+ interrupts = ; -+ interconnects = <&mbus 9>; -+ interconnect-names = "dma-mem"; -+ }; -+ - syscon: system-control@1c00000 { - compatible = "allwinner,sun8i-r40-system-control", - "allwinner,sun4i-a10-system-control"; diff --git a/projects/Allwinner/patches/linux/crust/0038-arm64-dts-allwinner-a64-Add-SCPI-protocol.patch b/projects/Allwinner/patches/linux/0011-arm64-dts-allwinner-a64-Add-SCPI-protocol.patch similarity index 100% rename from projects/Allwinner/patches/linux/crust/0038-arm64-dts-allwinner-a64-Add-SCPI-protocol.patch rename to projects/Allwinner/patches/linux/0011-arm64-dts-allwinner-a64-Add-SCPI-protocol.patch diff --git a/projects/Allwinner/patches/linux/0012-arm64-dts-allwinner-h5-Add-deinterlace-node.patch b/projects/Allwinner/patches/linux/0012-arm64-dts-allwinner-h5-Add-deinterlace-node.patch deleted file mode 100644 index 5bcbc7e9c5..0000000000 --- a/projects/Allwinner/patches/linux/0012-arm64-dts-allwinner-h5-Add-deinterlace-node.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 7166a5b6ab1f3d9ba0f5236b738525e828138c8e Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Wed, 6 Jan 2021 19:25:23 +0100 -Subject: [PATCH 12/44] arm64: dts: allwinner: h5: Add deinterlace node - -Deinterlace core is completely compatible to H3. - -Add a node for it. - -Signed-off-by: Jernej Skrabec -Signed-off-by: Maxime Ripard -Link: https://lore.kernel.org/r/20210106182523.1325796-1-jernej.skrabec@siol.net ---- - arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi -@@ -121,6 +121,19 @@ - resets = <&ccu RST_BUS_CE>; - }; - -+ deinterlace: deinterlace@1e00000 { -+ compatible = "allwinner,sun8i-h3-deinterlace"; -+ reg = <0x01e00000 0x20000>; -+ clocks = <&ccu CLK_BUS_DEINTERLACE>, -+ <&ccu CLK_DEINTERLACE>, -+ <&ccu CLK_DRAM_DEINTERLACE>; -+ clock-names = "bus", "mod", "ram"; -+ resets = <&ccu RST_BUS_DEINTERLACE>; -+ interrupts = ; -+ interconnects = <&mbus 9>; -+ interconnect-names = "dma-mem"; -+ }; -+ - mali: gpu@1e80000 { - compatible = "allwinner,sun50i-h5-mali", "arm,mali-450"; - reg = <0x01e80000 0x30000>; diff --git a/projects/Allwinner/patches/linux/crust/0039-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch b/projects/Allwinner/patches/linux/0012-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch similarity index 98% rename from projects/Allwinner/patches/linux/crust/0039-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch rename to projects/Allwinner/patches/linux/0012-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch index 896b32aeae..0971c9d7ed 100644 --- a/projects/Allwinner/patches/linux/crust/0039-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch +++ b/projects/Allwinner/patches/linux/0012-arm64-dts-allwinner-h6-Add-SCPI-protocol.patch @@ -24,7 +24,7 @@ Signed-off-by: Samuel Holland timer { compatible = "arm,armv8-timer"; arm,no-tick-in-suspend; -@@ -207,6 +214,19 @@ +@@ -196,6 +203,19 @@ #size-cells = <1>; ranges; diff --git a/projects/Allwinner/patches/linux/0022-ASoC-hdmi-codec-fix-channel-allocation.patch b/projects/Allwinner/patches/linux/0013-ASoC-hdmi-codec-fix-channel-allocation.patch similarity index 98% rename from projects/Allwinner/patches/linux/0022-ASoC-hdmi-codec-fix-channel-allocation.patch rename to projects/Allwinner/patches/linux/0013-ASoC-hdmi-codec-fix-channel-allocation.patch index b5a73b1af7..83cb49cd9b 100644 --- a/projects/Allwinner/patches/linux/0022-ASoC-hdmi-codec-fix-channel-allocation.patch +++ b/projects/Allwinner/patches/linux/0013-ASoC-hdmi-codec-fix-channel-allocation.patch @@ -9,7 +9,7 @@ Subject: [PATCH 22/44] ASoC: hdmi-codec: fix channel allocation --- a/sound/soc/codecs/hdmi-codec.c +++ b/sound/soc/codecs/hdmi-codec.c -@@ -195,78 +195,69 @@ static const struct snd_pcm_chmap_elem h +@@ -194,78 +194,69 @@ static const struct snd_pcm_chmap_elem h */ static const struct hdmi_codec_cea_spk_alloc hdmi_codec_channel_alloc[] = { { .ca_id = 0x00, .n_ch = 2, diff --git a/projects/Allwinner/patches/linux/0013-drm-sun4i-csc-Rework-DE3-CSC-macros.patch b/projects/Allwinner/patches/linux/0013-drm-sun4i-csc-Rework-DE3-CSC-macros.patch deleted file mode 100644 index f8fdf0b2ff..0000000000 --- a/projects/Allwinner/patches/linux/0013-drm-sun4i-csc-Rework-DE3-CSC-macros.patch +++ /dev/null @@ -1,40 +0,0 @@ -From dcd9635dc6027b04a64e19ebb3dc15aaae082400 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Tue, 18 Feb 2020 19:24:29 +0100 -Subject: [PATCH 13/44] drm/sun4i: csc: Rework DE3 CSC macros - -Rework DE3 CSC macros to take just one coordinate instead of two. This -will make its usage easier in subsequent commit. - -Signed-off-by: Jernej Skrabec ---- - drivers/gpu/drm/sun4i/sun8i_csc.c | 2 +- - drivers/gpu/drm/sun4i/sun8i_mixer.h | 6 ++---- - 2 files changed, 3 insertions(+), 5 deletions(-) - ---- a/drivers/gpu/drm/sun4i/sun8i_csc.c -+++ b/drivers/gpu/drm/sun4i/sun8i_csc.c -@@ -194,7 +194,7 @@ static void sun8i_de3_ccsc_set_coefficie - return; - } - -- base_reg = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, layer, 0, 0); -+ base_reg = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, layer, 0); - regmap_bulk_write(map, base_reg, table, 12); - } - ---- a/drivers/gpu/drm/sun4i/sun8i_mixer.h -+++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h -@@ -50,10 +50,8 @@ - #define SUN8I_MIXER_BLEND_CK_MIN(base, x) ((base) + 0xe0 + 0x04 * (x)) - #define SUN8I_MIXER_BLEND_OUTCTL(base) ((base) + 0xfc) - #define SUN50I_MIXER_BLEND_CSC_CTL(base) ((base) + 0x100) --#define SUN50I_MIXER_BLEND_CSC_COEFF(base, layer, x, y) \ -- ((base) + 0x110 + (layer) * 0x30 + (x) * 0x10 + 4 * (y)) --#define SUN50I_MIXER_BLEND_CSC_CONST(base, layer, i) \ -- ((base) + 0x110 + (layer) * 0x30 + (i) * 0x10 + 0x0c) -+#define SUN50I_MIXER_BLEND_CSC_COEFF(base, layer, x) \ -+ ((base) + 0x110 + (layer) * 0x30 + (x) * 4) - - #define SUN8I_MIXER_BLEND_PIPE_CTL_EN_MSK GENMASK(12, 8) - #define SUN8I_MIXER_BLEND_PIPE_CTL_EN(pipe) BIT(8 + pipe) diff --git a/projects/Allwinner/patches/linux/0014-drm-sun4i-de2-de3-Remove-redundant-CSC-matrices.patch b/projects/Allwinner/patches/linux/0014-drm-sun4i-de2-de3-Remove-redundant-CSC-matrices.patch deleted file mode 100644 index de6c92f2bf..0000000000 --- a/projects/Allwinner/patches/linux/0014-drm-sun4i-de2-de3-Remove-redundant-CSC-matrices.patch +++ /dev/null @@ -1,163 +0,0 @@ -From acdfa534d3fe6759f43c1fe0bcd2fd40f31d3797 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Tue, 18 Feb 2020 19:44:33 +0100 -Subject: [PATCH 14/44] drm/sun4i: de2/de3: Remove redundant CSC matrices - -YUV to RGB matrices are almost identical to YVU to RGB matrices. They -only have second and third column reversed. Do that reversion in code in -order to lower amount of static data and redundancy. - -Signed-off-by: Jernej Skrabec ---- - drivers/gpu/drm/sun4i/sun8i_csc.c | 99 +++++++++++-------------------- - 1 file changed, 34 insertions(+), 65 deletions(-) - ---- a/drivers/gpu/drm/sun4i/sun8i_csc.c -+++ b/drivers/gpu/drm/sun4i/sun8i_csc.c -@@ -46,33 +46,6 @@ static const u32 yuv2rgb[2][2][12] = { - }, - }; - --static const u32 yvu2rgb[2][2][12] = { -- [DRM_COLOR_YCBCR_LIMITED_RANGE] = { -- [DRM_COLOR_YCBCR_BT601] = { -- 0x000004A8, 0x00000662, 0x00000000, 0xFFFC8451, -- 0x000004A8, 0xFFFFFCC0, 0xFFFFFE6F, 0x00021E4D, -- 0x000004A8, 0x00000000, 0x00000811, 0xFFFBACA9, -- }, -- [DRM_COLOR_YCBCR_BT709] = { -- 0x000004A8, 0x0000072B, 0x00000000, 0xFFFC1F99, -- 0x000004A8, 0xFFFFFDDF, 0xFFFFFF26, 0x00013383, -- 0x000004A8, 0x00000000, 0x00000873, 0xFFFB7BEF, -- } -- }, -- [DRM_COLOR_YCBCR_FULL_RANGE] = { -- [DRM_COLOR_YCBCR_BT601] = { -- 0x00000400, 0x0000059B, 0x00000000, 0xFFFD322E, -- 0x00000400, 0xFFFFFD25, 0xFFFFFEA0, 0x00021DD5, -- 0x00000400, 0x00000000, 0x00000716, 0xFFFC74BD, -- }, -- [DRM_COLOR_YCBCR_BT709] = { -- 0x00000400, 0x0000064C, 0x00000000, 0xFFFCD9B4, -- 0x00000400, 0xFFFFFE21, 0xFFFFFF41, 0x00014F96, -- 0x00000400, 0x00000000, 0x0000076C, 0xFFFC49EF, -- } -- }, --}; -- - /* - * DE3 has a bit different CSC units. Factors are in two's complement format. - * First three factors in a row are multiplication factors which have 17 bits -@@ -123,33 +96,6 @@ static const u32 yuv2rgb_de3[2][2][12] = - }, - }; - --static const u32 yvu2rgb_de3[2][2][12] = { -- [DRM_COLOR_YCBCR_LIMITED_RANGE] = { -- [DRM_COLOR_YCBCR_BT601] = { -- 0x0002542A, 0x0003312A, 0x00000000, 0xFFC00000, -- 0x0002542A, 0xFFFE5FC3, 0xFFFF376B, 0xFE000000, -- 0x0002542A, 0x00000000, 0x000408D2, 0xFE000000, -- }, -- [DRM_COLOR_YCBCR_BT709] = { -- 0x0002542A, 0x000395E2, 0x00000000, 0xFFC00000, -- 0x0002542A, 0xFFFEEF27, 0xFFFF92D2, 0xFE000000, -- 0x0002542A, 0x00000000, 0x0004398C, 0xFE000000, -- } -- }, -- [DRM_COLOR_YCBCR_FULL_RANGE] = { -- [DRM_COLOR_YCBCR_BT601] = { -- 0x00020000, 0x0002CDD2, 0x00000000, 0x00000000, -- 0x00020000, 0xFFFE925D, 0xFFFF4FCE, 0xFE000000, -- 0x00020000, 0x00000000, 0x00038B43, 0xFE000000, -- }, -- [DRM_COLOR_YCBCR_BT709] = { -- 0x00020000, 0x0003264C, 0x00000000, 0x00000000, -- 0x00020000, 0xFFFF1053, 0xFFFFA018, 0xFE000000, -- 0x00020000, 0x00000000, 0x0003B611, 0xFE000000, -- } -- }, --}; -- - static void sun8i_csc_set_coefficients(struct regmap *map, u32 base, - enum sun8i_csc_mode mode, - enum drm_color_encoding encoding, -@@ -157,21 +103,30 @@ static void sun8i_csc_set_coefficients(s - { - const u32 *table; - u32 base_reg; -+ int i; -+ -+ table = yuv2rgb[range][encoding]; - - switch (mode) { - case SUN8I_CSC_MODE_YUV2RGB: -- table = yuv2rgb[range][encoding]; -+ base_reg = SUN8I_CSC_COEFF(base, 0); -+ regmap_bulk_write(map, base_reg, table, 12); - break; - case SUN8I_CSC_MODE_YVU2RGB: -- table = yvu2rgb[range][encoding]; -+ for (i = 0; i < 12; i++) { -+ if ((i & 3) == 1) -+ base_reg = SUN8I_CSC_COEFF(base, i + 1); -+ else if ((i & 3) == 2) -+ base_reg = SUN8I_CSC_COEFF(base, i - 1); -+ else -+ base_reg = SUN8I_CSC_COEFF(base, i); -+ regmap_write(map, base_reg, table[i]); -+ } - break; - default: - DRM_WARN("Wrong CSC mode specified.\n"); - return; - } -- -- base_reg = SUN8I_CSC_COEFF(base, 0); -- regmap_bulk_write(map, base_reg, table, 12); - } - - static void sun8i_de3_ccsc_set_coefficients(struct regmap *map, int layer, -@@ -180,22 +135,36 @@ static void sun8i_de3_ccsc_set_coefficie - enum drm_color_range range) - { - const u32 *table; -- u32 base_reg; -+ u32 addr; -+ int i; -+ -+ table = yuv2rgb_de3[range][encoding]; - - switch (mode) { - case SUN8I_CSC_MODE_YUV2RGB: -- table = yuv2rgb_de3[range][encoding]; -+ addr = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, layer, 0); -+ regmap_bulk_write(map, addr, table, 12); - break; - case SUN8I_CSC_MODE_YVU2RGB: -- table = yvu2rgb_de3[range][encoding]; -+ for (i = 0; i < 12; i++) { -+ if ((i & 3) == 1) -+ addr = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, -+ layer, -+ i + 1); -+ else if ((i & 3) == 2) -+ addr = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, -+ layer, -+ i - 1); -+ else -+ addr = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, -+ layer, i); -+ regmap_write(map, addr, table[i]); -+ } - break; - default: - DRM_WARN("Wrong CSC mode specified.\n"); - return; - } -- -- base_reg = SUN50I_MIXER_BLEND_CSC_COEFF(DE3_BLD_BASE, layer, 0); -- regmap_bulk_write(map, base_reg, table, 12); - } - - static void sun8i_csc_enable(struct regmap *map, u32 base, bool enable) diff --git a/projects/Allwinner/patches/linux/0023-media-uapi-hevc-Add-scaling-matrix-control.patch b/projects/Allwinner/patches/linux/0014-media-uapi-hevc-Add-scaling-matrix-control.patch similarity index 74% rename from projects/Allwinner/patches/linux/0023-media-uapi-hevc-Add-scaling-matrix-control.patch rename to projects/Allwinner/patches/linux/0014-media-uapi-hevc-Add-scaling-matrix-control.patch index 8add1ecf3a..1acd9d90f6 100644 --- a/projects/Allwinner/patches/linux/0023-media-uapi-hevc-Add-scaling-matrix-control.patch +++ b/projects/Allwinner/patches/linux/0014-media-uapi-hevc-Add-scaling-matrix-control.patch @@ -13,7 +13,7 @@ Signed-off-by: Jernej Skrabec --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c -@@ -1021,6 +1021,7 @@ const char *v4l2_ctrl_get_name(u32 id) +@@ -1041,6 +1041,7 @@ const char *v4l2_ctrl_get_name(u32 id) case V4L2_CID_MPEG_VIDEO_HEVC_SPS: return "HEVC Sequence Parameter Set"; case V4L2_CID_MPEG_VIDEO_HEVC_PPS: return "HEVC Picture Parameter Set"; case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS: return "HEVC Slice Parameters"; @@ -21,7 +21,7 @@ Signed-off-by: Jernej Skrabec case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE: return "HEVC Decode Mode"; case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE: return "HEVC Start Code"; -@@ -1461,6 +1462,9 @@ void v4l2_ctrl_fill(u32 id, const char * +@@ -1526,6 +1527,9 @@ void v4l2_ctrl_fill(u32 id, const char * case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS: *type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS; break; @@ -31,8 +31,8 @@ Signed-off-by: Jernej Skrabec case V4L2_CID_UNIT_CELL_SIZE: *type = V4L2_CTRL_TYPE_AREA; *flags |= V4L2_CTRL_FLAG_READ_ONLY; -@@ -1934,6 +1938,9 @@ static int std_validate_compound(const s - zero_padding(*p_hevc_slice_params); +@@ -2237,6 +2241,9 @@ static int std_validate_compound(const s + break; + case V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX: @@ -41,9 +41,9 @@ Signed-off-by: Jernej Skrabec case V4L2_CTRL_TYPE_AREA: area = p; if (!area->width || !area->height) -@@ -2626,6 +2633,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s - case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS: - elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params); +@@ -2953,6 +2960,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(s + case V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY: + elem_size = sizeof(struct v4l2_ctrl_hdr10_mastering_display); break; + case V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX: + elem_size = sizeof(struct v4l2_ctrl_hevc_scaling_matrix); @@ -54,12 +54,12 @@ Signed-off-by: Jernej Skrabec --- a/include/media/hevc-ctrls.h +++ b/include/media/hevc-ctrls.h @@ -19,6 +19,7 @@ - #define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_MPEG_BASE + 1008) - #define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_MPEG_BASE + 1009) - #define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_MPEG_BASE + 1010) -+#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_MPEG_BASE + 1011) - #define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_MPEG_BASE + 1015) - #define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_MPEG_BASE + 1016) + #define V4L2_CID_MPEG_VIDEO_HEVC_SPS (V4L2_CID_CODEC_BASE + 1008) + #define V4L2_CID_MPEG_VIDEO_HEVC_PPS (V4L2_CID_CODEC_BASE + 1009) + #define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_BASE + 1010) ++#define V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_BASE + 1011) + #define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE (V4L2_CID_CODEC_BASE + 1015) + #define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE (V4L2_CID_CODEC_BASE + 1016) @@ -26,6 +27,7 @@ #define V4L2_CTRL_TYPE_HEVC_SPS 0x0120 diff --git a/projects/Allwinner/patches/linux/0015-drm-sun4i-Add-support-for-BT2020-to-DE3.patch b/projects/Allwinner/patches/linux/0015-drm-sun4i-Add-support-for-BT2020-to-DE3.patch deleted file mode 100644 index f94f13d1b8..0000000000 --- a/projects/Allwinner/patches/linux/0015-drm-sun4i-Add-support-for-BT2020-to-DE3.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 2c9a7a5a71d5ed6db9ee28a5ccd11f0db45f574d Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Wed, 15 Apr 2020 10:24:05 +0200 -Subject: [PATCH 15/44] drm/sun4i: Add support for BT2020 to DE3 - -DE3 supports 10-bit formats, so it's only naturally to also support -BT2020 encoding. - -Add support for it. - -Signed-off-by: Jernej Skrabec ---- - drivers/gpu/drm/sun4i/sun8i_csc.c | 12 +++++++++++- - drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 ++ - 2 files changed, 13 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/sun4i/sun8i_csc.c -+++ b/drivers/gpu/drm/sun4i/sun8i_csc.c -@@ -69,7 +69,7 @@ static const u32 yuv2rgb[2][2][12] = { - * c20 c21 c22 [d2 const2] - */ - --static const u32 yuv2rgb_de3[2][2][12] = { -+static const u32 yuv2rgb_de3[2][3][12] = { - [DRM_COLOR_YCBCR_LIMITED_RANGE] = { - [DRM_COLOR_YCBCR_BT601] = { - 0x0002542A, 0x00000000, 0x0003312A, 0xFFC00000, -@@ -80,6 +80,11 @@ static const u32 yuv2rgb_de3[2][2][12] = - 0x0002542A, 0x00000000, 0x000395E2, 0xFFC00000, - 0x0002542A, 0xFFFF92D2, 0xFFFEEF27, 0xFE000000, - 0x0002542A, 0x0004398C, 0x00000000, 0xFE000000, -+ }, -+ [DRM_COLOR_YCBCR_BT2020] = { -+ 0x0002542A, 0x00000000, 0x00035B7B, 0xFFC00000, -+ 0x0002542A, 0xFFFFA017, 0xFFFEB2FC, 0xFE000000, -+ 0x0002542A, 0x00044896, 0x00000000, 0xFE000000, - } - }, - [DRM_COLOR_YCBCR_FULL_RANGE] = { -@@ -92,6 +97,11 @@ static const u32 yuv2rgb_de3[2][2][12] = - 0x00020000, 0x00000000, 0x0003264C, 0x00000000, - 0x00020000, 0xFFFFA018, 0xFFFF1053, 0xFE000000, - 0x00020000, 0x0003B611, 0x00000000, 0xFE000000, -+ }, -+ [DRM_COLOR_YCBCR_BT2020] = { -+ 0x00020000, 0x00000000, 0x0002F2FE, 0x00000000, -+ 0x00020000, 0xFFFFABC0, 0xFFFEDB78, 0xFE000000, -+ 0x00020000, 0x0003C346, 0x00000000, 0xFE000000, - } - }, - }; ---- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c -+++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c -@@ -543,6 +543,8 @@ struct sun8i_vi_layer *sun8i_vi_layer_in - - supported_encodings = BIT(DRM_COLOR_YCBCR_BT601) | - BIT(DRM_COLOR_YCBCR_BT709); -+ if (mixer->cfg->is_de3) -+ supported_encodings |= BIT(DRM_COLOR_YCBCR_BT2020); - - supported_ranges = BIT(DRM_COLOR_YCBCR_LIMITED_RANGE) | - BIT(DRM_COLOR_YCBCR_FULL_RANGE); diff --git a/projects/Allwinner/patches/linux/0024-media-cedrus-hevc-Add-support-for-scaling-matrix.patch b/projects/Allwinner/patches/linux/0015-media-cedrus-hevc-Add-support-for-scaling-matrix.patch similarity index 96% rename from projects/Allwinner/patches/linux/0024-media-cedrus-hevc-Add-support-for-scaling-matrix.patch rename to projects/Allwinner/patches/linux/0015-media-cedrus-hevc-Add-support-for-scaling-matrix.patch index ddf6ff9f6b..2be33c242a 100644 --- a/projects/Allwinner/patches/linux/0024-media-cedrus-hevc-Add-support-for-scaling-matrix.patch +++ b/projects/Allwinner/patches/linux/0015-media-cedrus-hevc-Add-support-for-scaling-matrix.patch @@ -16,14 +16,13 @@ Signed-off-by: Jernej Skrabec --- a/drivers/staging/media/sunxi/cedrus/cedrus.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -126,6 +126,13 @@ static const struct cedrus_control cedru +@@ -131,6 +131,12 @@ static const struct cedrus_control cedru }, { .cfg = { + .id = V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX, + }, + .codec = CEDRUS_CODEC_H265, -+ .required = true, + }, + { + .cfg = { @@ -32,14 +31,14 @@ Signed-off-by: Jernej Skrabec .def = V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, --- a/drivers/staging/media/sunxi/cedrus/cedrus.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -74,6 +74,7 @@ struct cedrus_h265_run { +@@ -76,6 +76,7 @@ struct cedrus_h265_run { const struct v4l2_ctrl_hevc_sps *sps; const struct v4l2_ctrl_hevc_pps *pps; const struct v4l2_ctrl_hevc_slice_params *slice_params; + const struct v4l2_ctrl_hevc_scaling_matrix *scaling_matrix; }; - struct cedrus_run { + struct cedrus_vp8_run { --- a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c @@ -68,6 +68,8 @@ void cedrus_device_run(void *priv) @@ -50,7 +49,7 @@ Signed-off-by: Jernej Skrabec + V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX); break; - default: + case V4L2_PIX_FMT_VP8_FRAME: --- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c @@ -238,6 +238,69 @@ static void cedrus_h265_skip_bits(struct @@ -139,7 +138,7 @@ Signed-off-by: Jernej Skrabec /* Neightbor information address. */ --- a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h -@@ -493,6 +493,8 @@ +@@ -494,6 +494,8 @@ #define VE_DEC_H265_ENTRY_POINT_OFFSET_ADDR (VE_ENGINE_DEC_H265 + 0x64) #define VE_DEC_H265_TILE_START_CTB (VE_ENGINE_DEC_H265 + 0x68) #define VE_DEC_H265_TILE_END_CTB (VE_ENGINE_DEC_H265 + 0x6c) diff --git a/projects/Allwinner/patches/linux/0025-media-uapi-hevc-Add-segment-address-field.patch b/projects/Allwinner/patches/linux/0016-media-uapi-hevc-Add-segment-address-field.patch similarity index 100% rename from projects/Allwinner/patches/linux/0025-media-uapi-hevc-Add-segment-address-field.patch rename to projects/Allwinner/patches/linux/0016-media-uapi-hevc-Add-segment-address-field.patch diff --git a/projects/Allwinner/patches/linux/0016-mmc-sunxi-mmc-Ensure-host-is-suspended-during-system.patch b/projects/Allwinner/patches/linux/0016-mmc-sunxi-mmc-Ensure-host-is-suspended-during-system.patch deleted file mode 100644 index 1a4b75baa0..0000000000 --- a/projects/Allwinner/patches/linux/0016-mmc-sunxi-mmc-Ensure-host-is-suspended-during-system.patch +++ /dev/null @@ -1,27 +0,0 @@ -From e689f3536e632e26166e66eac88728c6653a18b6 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Tue, 12 Jan 2021 23:24:21 -0600 -Subject: [PATCH 16/44] mmc: sunxi-mmc: Ensure host is suspended during system - sleep - -If the device suspend process begins before the mmc host's autosuspend -timeout, the host will continue running during system sleep. Avoid -this by forcing runtime suspend during a global suspend transition. - -Signed-off-by: Samuel Holland -Acked-by: Maxime Ripard ---- - drivers/mmc/host/sunxi-mmc.c | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/drivers/mmc/host/sunxi-mmc.c -+++ b/drivers/mmc/host/sunxi-mmc.c -@@ -1506,6 +1506,8 @@ static int sunxi_mmc_runtime_suspend(str - #endif - - static const struct dev_pm_ops sunxi_mmc_pm_ops = { -+ SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, -+ pm_runtime_force_resume) - SET_RUNTIME_PM_OPS(sunxi_mmc_runtime_suspend, - sunxi_mmc_runtime_resume, - NULL) diff --git a/projects/Allwinner/patches/linux/0017-arm64-dts-allwinner-h6-Add-I2S1-node.patch b/projects/Allwinner/patches/linux/0017-arm64-dts-allwinner-h6-Add-I2S1-node.patch deleted file mode 100644 index 58c540517a..0000000000 --- a/projects/Allwinner/patches/linux/0017-arm64-dts-allwinner-h6-Add-I2S1-node.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e019a54d084020e6acc2869da341b376700bfe4c Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Fri, 30 Oct 2020 15:46:44 +0100 -Subject: [PATCH 17/44] arm64: dts: allwinner: h6: Add I2S1 node -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add Allwinner H6 I2S1 node connected to HDMI interface. - -Signed-off-by: Jernej Skrabec -Signed-off-by: Marcus Cooper -Signed-off-by: Clément Péron -Signed-off-by: Maxime Ripard -Acked-by: Chen-Yu Tsai -Link: https://lore.kernel.org/r/20201030144648.397824-12-peron.clem@gmail.com ---- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -609,6 +609,19 @@ - }; - }; - -+ i2s1: i2s@5091000 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun50i-h6-i2s"; -+ reg = <0x05091000 0x1000>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>; -+ clock-names = "apb", "mod"; -+ dmas = <&dma 4>, <&dma 4>; -+ resets = <&ccu RST_BUS_I2S1>; -+ dma-names = "rx", "tx"; -+ status = "disabled"; -+ }; -+ - spdif: spdif@5093000 { - #sound-dai-cells = <0>; - compatible = "allwinner,sun50i-h6-spdif"; diff --git a/projects/Allwinner/patches/linux/0026-media-cedrus-hevc-Add-support-for-multiple-slices.patch b/projects/Allwinner/patches/linux/0017-media-cedrus-hevc-Add-support-for-multiple-slices.patch similarity index 98% rename from projects/Allwinner/patches/linux/0026-media-cedrus-hevc-Add-support-for-multiple-slices.patch rename to projects/Allwinner/patches/linux/0017-media-cedrus-hevc-Add-support-for-multiple-slices.patch index eb22de15b0..85b39b62d6 100644 --- a/projects/Allwinner/patches/linux/0026-media-cedrus-hevc-Add-support-for-multiple-slices.patch +++ b/projects/Allwinner/patches/linux/0017-media-cedrus-hevc-Add-support-for-multiple-slices.patch @@ -80,7 +80,7 @@ Signed-off-by: Jernej Skrabec --- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -@@ -332,6 +332,7 @@ static int cedrus_s_fmt_vid_out(struct f +@@ -340,6 +340,7 @@ static int cedrus_s_fmt_vid_out(struct f switch (ctx->src_fmt.pixelformat) { case V4L2_PIX_FMT_H264_SLICE: diff --git a/projects/Allwinner/patches/linux/0018-arm64-dts-allwinner-a64-Add-I2S2-node.patch b/projects/Allwinner/patches/linux/0018-arm64-dts-allwinner-a64-Add-I2S2-node.patch deleted file mode 100644 index e47e95c9fb..0000000000 --- a/projects/Allwinner/patches/linux/0018-arm64-dts-allwinner-a64-Add-I2S2-node.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0175a3d5680924d3d64ee8181b50c8b06ee715d1 Mon Sep 17 00:00:00 2001 -From: Marcus Cooper -Date: Fri, 30 Oct 2020 15:46:45 +0100 -Subject: [PATCH 18/44] arm64: dts: allwinner: a64: Add I2S2 node -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add the I2S2 node connected to the HDMI interface. - -Signed-off-by: Jernej Skrabec -Signed-off-by: Marcus Cooper -Signed-off-by: Clément Péron -Signed-off-by: Maxime Ripard -Acked-by: Chen-Yu Tsai -Link: https://lore.kernel.org/r/20201030144648.397824-13-peron.clem@gmail.com ---- - arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -@@ -846,6 +846,20 @@ - status = "disabled"; - }; - -+ i2s2: i2s@1c22800 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun50i-a64-i2s", -+ "allwinner,sun8i-h3-i2s"; -+ reg = <0x01c22800 0x400>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>; -+ clock-names = "apb", "mod"; -+ resets = <&ccu RST_BUS_I2S2>; -+ dma-names = "rx", "tx"; -+ dmas = <&dma 27>, <&dma 27>; -+ status = "disabled"; -+ }; -+ - dai: dai@1c22c00 { - #sound-dai-cells = <0>; - compatible = "allwinner,sun50i-a64-codec-i2s"; diff --git a/projects/Allwinner/patches/linux/0027-media-cedrus-hevc-tiles-hack.patch b/projects/Allwinner/patches/linux/0018-media-cedrus-hevc-tiles-hack.patch similarity index 98% rename from projects/Allwinner/patches/linux/0027-media-cedrus-hevc-tiles-hack.patch rename to projects/Allwinner/patches/linux/0018-media-cedrus-hevc-tiles-hack.patch index e1eb4ebb84..670f87b6d3 100644 --- a/projects/Allwinner/patches/linux/0027-media-cedrus-hevc-tiles-hack.patch +++ b/projects/Allwinner/patches/linux/0018-media-cedrus-hevc-tiles-hack.patch @@ -12,15 +12,15 @@ Signed-off-by: Jernej Skrabec --- a/drivers/staging/media/sunxi/cedrus/cedrus.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -135,6 +135,8 @@ struct cedrus_ctx { +@@ -142,6 +142,8 @@ struct cedrus_ctx { ssize_t mv_col_buf_unit_size; void *neighbor_info_buf; dma_addr_t neighbor_info_buf_addr; + void *entry_points_buf; + dma_addr_t entry_points_buf_addr; } h265; - } codec; - }; + struct { + unsigned int last_frame_p_type; --- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c @@ -301,6 +301,61 @@ static void cedrus_h265_write_scaling_li diff --git a/projects/Allwinner/patches/linux/0019-arm-dts-sunxi-h3-h5-Add-I2S2-node.patch b/projects/Allwinner/patches/linux/0019-arm-dts-sunxi-h3-h5-Add-I2S2-node.patch deleted file mode 100644 index dfd107a942..0000000000 --- a/projects/Allwinner/patches/linux/0019-arm-dts-sunxi-h3-h5-Add-I2S2-node.patch +++ /dev/null @@ -1,42 +0,0 @@ -From fd67e65487b4e5e2a93df2868043302a99f93098 Mon Sep 17 00:00:00 2001 -From: Marcus Cooper -Date: Fri, 30 Oct 2020 15:46:48 +0100 -Subject: [PATCH 19/44] arm: dts: sunxi: h3/h5: Add I2S2 node -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Add H3/H5 I2S2 node connected to the HDMI interface. - -Signed-off-by: Jernej Skrabec -Signed-off-by: Marcus Cooper -Signed-off-by: Clément Péron -Signed-off-by: Maxime Ripard -Acked-by: Chen-Yu Tsai -Link: https://lore.kernel.org/r/20201030144648.397824-16-peron.clem@gmail.com ---- - arch/arm/boot/dts/sunxi-h3-h5.dtsi | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - ---- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi -+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -@@ -662,6 +662,19 @@ - status = "disabled"; - }; - -+ i2s2: i2s@1c22800 { -+ #sound-dai-cells = <0>; -+ compatible = "allwinner,sun8i-h3-i2s"; -+ reg = <0x01c22800 0x400>; -+ interrupts = ; -+ clocks = <&ccu CLK_BUS_I2S2>, <&ccu CLK_I2S2>; -+ clock-names = "apb", "mod"; -+ dmas = <&dma 27>; -+ resets = <&ccu RST_BUS_I2S2>; -+ dma-names = "tx"; -+ status = "disabled"; -+ }; -+ - codec: codec@1c22c00 { - #sound-dai-cells = <0>; - compatible = "allwinner,sun8i-h3-codec"; diff --git a/projects/Allwinner/patches/linux/0028-media-cedrus-Add-callback-for-buffer-cleanup.patch b/projects/Allwinner/patches/linux/0019-media-cedrus-Add-callback-for-buffer-cleanup.patch similarity index 91% rename from projects/Allwinner/patches/linux/0028-media-cedrus-Add-callback-for-buffer-cleanup.patch rename to projects/Allwinner/patches/linux/0019-media-cedrus-Add-callback-for-buffer-cleanup.patch index b8006ee8a9..f8ebf3ad21 100644 --- a/projects/Allwinner/patches/linux/0028-media-cedrus-Add-callback-for-buffer-cleanup.patch +++ b/projects/Allwinner/patches/linux/0019-media-cedrus-Add-callback-for-buffer-cleanup.patch @@ -11,7 +11,7 @@ Signed-off-by: Jernej Skrabec --- a/drivers/staging/media/sunxi/cedrus/cedrus.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -149,6 +149,7 @@ struct cedrus_dec_ops { +@@ -164,6 +164,7 @@ struct cedrus_dec_ops { int (*start)(struct cedrus_ctx *ctx); void (*stop)(struct cedrus_ctx *ctx); void (*trigger)(struct cedrus_ctx *ctx); @@ -21,7 +21,7 @@ Signed-off-by: Jernej Skrabec struct cedrus_variant { --- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -@@ -455,6 +455,18 @@ static int cedrus_buf_prepare(struct vb2 +@@ -463,6 +463,18 @@ static int cedrus_buf_prepare(struct vb2 return 0; } @@ -40,7 +40,7 @@ Signed-off-by: Jernej Skrabec static int cedrus_start_streaming(struct vb2_queue *vq, unsigned int count) { struct cedrus_ctx *ctx = vb2_get_drv_priv(vq); -@@ -535,6 +547,7 @@ static void cedrus_buf_request_complete( +@@ -547,6 +559,7 @@ static void cedrus_buf_request_complete( static struct vb2_ops cedrus_qops = { .queue_setup = cedrus_queue_setup, .buf_prepare = cedrus_buf_prepare, diff --git a/projects/Allwinner/patches/linux/0020-arm64-dts-allwinner-h6-PineH64-model-B-Add-wifi.patch b/projects/Allwinner/patches/linux/0020-arm64-dts-allwinner-h6-PineH64-model-B-Add-wifi.patch deleted file mode 100644 index 12fd8d08a8..0000000000 --- a/projects/Allwinner/patches/linux/0020-arm64-dts-allwinner-h6-PineH64-model-B-Add-wifi.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 3c970c9e87e403b190407dec5c6e4745aef78e6a Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Fri, 30 Oct 2020 18:25:30 +0100 -Subject: [PATCH 20/44] arm64: dts: allwinner: h6: PineH64 model B: Add wifi - -PineH64 model B contains RTL8723CS wifi+bt combo module. - -Since bluetooth support is not yet squared away, only wifi is enabled -for now. - -Signed-off-by: Jernej Skrabec -Signed-off-by: Maxime Ripard -Tested-by: -Acked-by: Chen-Yu Tsai -Link: https://lore.kernel.org/r/20201030172530.1096394-1-jernej.skrabec@siol.net ---- - .../dts/allwinner/sun50i-h6-pine-h64-model-b.dts | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64-model-b.dts -@@ -10,6 +10,12 @@ - compatible = "pine64,pine-h64-model-b", "allwinner,sun50i-h6"; - - /delete-node/ reg_gmac_3v3; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */ -+ post-power-on-delay-ms = <200>; -+ }; - }; - - &hdmi_connector { -@@ -19,3 +25,12 @@ - &emac { - phy-supply = <®_aldo2>; - }; -+ -+&mmc1 { -+ vmmc-supply = <®_cldo3>; -+ vqmmc-supply = <®_aldo1>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+}; diff --git a/projects/Allwinner/patches/linux/0029-media-cedrus-hevc-Improve-buffer-management.patch b/projects/Allwinner/patches/linux/0020-media-cedrus-hevc-Improve-buffer-management.patch similarity index 98% rename from projects/Allwinner/patches/linux/0029-media-cedrus-hevc-Improve-buffer-management.patch rename to projects/Allwinner/patches/linux/0020-media-cedrus-hevc-Improve-buffer-management.patch index fa357267c3..7c5ac09327 100644 --- a/projects/Allwinner/patches/linux/0029-media-cedrus-hevc-Improve-buffer-management.patch +++ b/projects/Allwinner/patches/linux/0020-media-cedrus-hevc-Improve-buffer-management.patch @@ -11,7 +11,7 @@ Signed-off-by: Jernej Skrabec --- a/drivers/staging/media/sunxi/cedrus/cedrus.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -96,6 +96,11 @@ struct cedrus_buffer { +@@ -103,6 +103,11 @@ struct cedrus_buffer { unsigned int position; enum cedrus_h264_pic_type pic_type; } h264; @@ -23,7 +23,7 @@ Signed-off-by: Jernej Skrabec } codec; }; -@@ -129,10 +134,6 @@ struct cedrus_ctx { +@@ -136,10 +141,6 @@ struct cedrus_ctx { ssize_t intra_pred_buf_size; } h264; struct { diff --git a/projects/Allwinner/patches/linux/0030-media-cedrus-h264-Improve-buffer-management.patch b/projects/Allwinner/patches/linux/0021-media-cedrus-h264-Improve-buffer-management.patch similarity index 99% rename from projects/Allwinner/patches/linux/0030-media-cedrus-h264-Improve-buffer-management.patch rename to projects/Allwinner/patches/linux/0021-media-cedrus-h264-Improve-buffer-management.patch index 648ade8589..72f2887df5 100644 --- a/projects/Allwinner/patches/linux/0030-media-cedrus-h264-Improve-buffer-management.patch +++ b/projects/Allwinner/patches/linux/0021-media-cedrus-h264-Improve-buffer-management.patch @@ -11,7 +11,7 @@ Signed-off-by: Jernej Skrabec --- a/drivers/staging/media/sunxi/cedrus/cedrus.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -95,6 +95,9 @@ struct cedrus_buffer { +@@ -102,6 +102,9 @@ struct cedrus_buffer { struct { unsigned int position; enum cedrus_h264_pic_type pic_type; diff --git a/projects/Allwinner/patches/linux/0031-WIp-10-bit-HEVC-support.patch b/projects/Allwinner/patches/linux/0022-WIp-10-bit-HEVC-support.patch similarity index 91% rename from projects/Allwinner/patches/linux/0031-WIp-10-bit-HEVC-support.patch rename to projects/Allwinner/patches/linux/0022-WIp-10-bit-HEVC-support.patch index 85477ccf2b..8d1ee5fde0 100644 --- a/projects/Allwinner/patches/linux/0031-WIp-10-bit-HEVC-support.patch +++ b/projects/Allwinner/patches/linux/0022-WIp-10-bit-HEVC-support.patch @@ -14,7 +14,7 @@ Signed-off-by: Jernej Skrabec --- a/drivers/staging/media/sunxi/cedrus/cedrus.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -301,7 +301,7 @@ static int cedrus_open(struct file *file +@@ -277,7 +277,7 @@ static int cedrus_open(struct file *file goto err_ctrls; } ctx->dst_fmt.pixelformat = V4L2_PIX_FMT_SUNXI_TILED_NV12; @@ -23,7 +23,7 @@ Signed-off-by: Jernej Skrabec ctx->src_fmt.pixelformat = V4L2_PIX_FMT_MPEG2_SLICE; /* * TILED_NV12 has more strict requirements, so copy the width and -@@ -309,7 +309,7 @@ static int cedrus_open(struct file *file +@@ -285,7 +285,7 @@ static int cedrus_open(struct file *file */ ctx->src_fmt.width = ctx->dst_fmt.width; ctx->src_fmt.height = ctx->dst_fmt.height; @@ -55,7 +55,7 @@ Signed-off-by: Jernej Skrabec reg = VE_DEC_H265_DEC_PPS_CTRL0_PPS_CR_QP_OFFSET(pps->pps_cr_qp_offset) | --- a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h -@@ -498,6 +498,10 @@ +@@ -499,6 +499,10 @@ #define VE_DEC_H265_LOW_ADDR (VE_ENGINE_DEC_H265 + 0x80) @@ -68,7 +68,7 @@ Signed-off-by: Jernej Skrabec #define VE_DEC_H265_LOW_ADDR_SECONDARY_CHROMA(a) \ --- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c +++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -@@ -93,7 +93,7 @@ static struct cedrus_format *cedrus_find +@@ -100,7 +100,7 @@ static struct cedrus_format *cedrus_find return &cedrus_formats[i]; } @@ -77,7 +77,7 @@ Signed-off-by: Jernej Skrabec { unsigned int width = pix_fmt->width; unsigned int height = pix_fmt->height; -@@ -147,6 +147,17 @@ void cedrus_prepare_format(struct v4l2_p +@@ -155,6 +155,17 @@ void cedrus_prepare_format(struct v4l2_p break; } @@ -95,7 +95,7 @@ Signed-off-by: Jernej Skrabec pix_fmt->width = width; pix_fmt->height = height; -@@ -239,17 +250,27 @@ static int cedrus_try_fmt_vid_cap(struct +@@ -247,17 +258,27 @@ static int cedrus_try_fmt_vid_cap(struct struct cedrus_ctx *ctx = cedrus_file2ctx(file); struct cedrus_dev *dev = ctx->dev; struct v4l2_pix_format *pix_fmt = &f->fmt.pix; @@ -124,7 +124,7 @@ Signed-off-by: Jernej Skrabec return 0; } -@@ -267,8 +288,7 @@ static int cedrus_try_fmt_vid_out(struct +@@ -275,8 +296,7 @@ static int cedrus_try_fmt_vid_out(struct if (!fmt) return -EINVAL; @@ -134,7 +134,7 @@ Signed-off-by: Jernej Skrabec return 0; } -@@ -349,7 +369,7 @@ static int cedrus_s_fmt_vid_out(struct f +@@ -357,7 +377,7 @@ static int cedrus_s_fmt_vid_out(struct f ctx->dst_fmt.quantization = f->fmt.pix.quantization; ctx->dst_fmt.width = ctx->src_fmt.width; ctx->dst_fmt.height = ctx->src_fmt.height; diff --git a/projects/Allwinner/patches/linux/0032-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch b/projects/Allwinner/patches/linux/0023-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch similarity index 77% rename from projects/Allwinner/patches/linux/0032-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch rename to projects/Allwinner/patches/linux/0023-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch index e16c2ce89e..c9e25a8c1c 100644 --- a/projects/Allwinner/patches/linux/0032-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch +++ b/projects/Allwinner/patches/linux/0023-media-cedrus-add-check-for-H264-and-HEVC-limitations.patch @@ -17,7 +17,7 @@ Signed-off-by: Jernej Skrabec +static int cedrus_try_ctrl(struct v4l2_ctrl *ctrl) +{ -+ if (ctrl->id == V4L2_CID_MPEG_VIDEO_H264_SPS) { ++ if (ctrl->id == V4L2_CID_STATELESS_H264_SPS) { + const struct v4l2_ctrl_h264_sps *sps = ctrl->p_new.p_h264_sps; + + if (sps->chroma_format_idc != 1) @@ -62,39 +62,39 @@ Signed-off-by: Jernej Skrabec static const struct cedrus_control cedrus_controls[] = { { .cfg = { -@@ -60,6 +104,7 @@ static const struct cedrus_control cedru +@@ -56,6 +100,7 @@ static const struct cedrus_control cedru { .cfg = { - .id = V4L2_CID_MPEG_VIDEO_H264_SPS, + .id = V4L2_CID_STATELESS_H264_SPS, + .ops = &cedrus_ctrl_ops, }, .codec = CEDRUS_CODEC_H264, - .required = true, -@@ -106,6 +151,7 @@ static const struct cedrus_control cedru + }, +@@ -114,6 +159,7 @@ static const struct cedrus_control cedru { .cfg = { .id = V4L2_CID_MPEG_VIDEO_HEVC_SPS, + .ops = &cedrus_ctrl_ops, }, .codec = CEDRUS_CODEC_H265, - .required = true, -@@ -534,7 +580,8 @@ static const struct cedrus_variant sun50 - - static const struct cedrus_variant sun50i_h6_cedrus_variant = { - .capabilities = CEDRUS_CAPABILITY_UNTILED | -- CEDRUS_CAPABILITY_H265_DEC, + }, +@@ -544,7 +590,8 @@ static const struct cedrus_variant sun50 + CEDRUS_CAPABILITY_MPEG2_DEC | + CEDRUS_CAPABILITY_H264_DEC | + CEDRUS_CAPABILITY_H265_DEC | +- CEDRUS_CAPABILITY_VP8_DEC, + CEDRUS_CAPABILITY_H265_DEC | + CEDRUS_CAPABILITY_H265_10_DEC, - .quirks = CEDRUS_QUIRK_NO_DMA_OFFSET, .mod_rate = 600000000, }; + --- a/drivers/staging/media/sunxi/cedrus/cedrus.h +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -28,6 +28,7 @@ - - #define CEDRUS_CAPABILITY_UNTILED BIT(0) - #define CEDRUS_CAPABILITY_H265_DEC BIT(1) -+#define CEDRUS_CAPABILITY_H265_10_DEC BIT(2) - - #define CEDRUS_QUIRK_NO_DMA_OFFSET BIT(0) +@@ -32,6 +32,7 @@ + #define CEDRUS_CAPABILITY_H264_DEC BIT(2) + #define CEDRUS_CAPABILITY_MPEG2_DEC BIT(3) + #define CEDRUS_CAPABILITY_VP8_DEC BIT(4) ++#define CEDRUS_CAPABILITY_H265_10_DEC BIT(5) + enum cedrus_codec { + CEDRUS_CODEC_MPEG2, diff --git a/projects/Allwinner/patches/linux/0034-WIP-dw-hdmi-cec-sleep-100ms-on-error.patch b/projects/Allwinner/patches/linux/0024-WIP-dw-hdmi-cec-sleep-100ms-on-error.patch similarity index 100% rename from projects/Allwinner/patches/linux/0034-WIP-dw-hdmi-cec-sleep-100ms-on-error.patch rename to projects/Allwinner/patches/linux/0024-WIP-dw-hdmi-cec-sleep-100ms-on-error.patch diff --git a/projects/Allwinner/patches/linux/0035-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch b/projects/Allwinner/patches/linux/0025-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch similarity index 89% rename from projects/Allwinner/patches/linux/0035-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch rename to projects/Allwinner/patches/linux/0025-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch index 1f8eab64dd..89011ed4c1 100644 --- a/projects/Allwinner/patches/linux/0035-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch +++ b/projects/Allwinner/patches/linux/0025-drm-sun4i-Reimplement-plane-z-position-setting-logic.patch @@ -152,10 +152,10 @@ Signed-off-by: Jernej Skrabec + mixer->channel_zpos[channel] = enable ? zpos : -1; } - static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, -@@ -267,11 +240,9 @@ static void sun8i_ui_layer_atomic_disabl - struct drm_plane_state *old_state) - { + static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel, +@@ -294,11 +267,9 @@ static void sun8i_ui_layer_atomic_disabl + struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, + plane); struct sun8i_ui_layer *layer = plane_to_sun8i_ui_layer(plane); - unsigned int old_zpos = old_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; @@ -166,21 +166,21 @@ Signed-off-by: Jernej Skrabec } static void sun8i_ui_layer_atomic_update(struct drm_plane *plane, -@@ -279,12 +250,11 @@ static void sun8i_ui_layer_atomic_update - { +@@ -310,12 +281,11 @@ static void sun8i_ui_layer_atomic_update + plane); struct sun8i_ui_layer *layer = plane_to_sun8i_ui_layer(plane); - unsigned int zpos = plane->state->normalized_zpos; + unsigned int zpos = new_state->normalized_zpos; - unsigned int old_zpos = old_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; - if (!plane->state->visible) { + if (!new_state->visible) { sun8i_ui_layer_enable(mixer, layer->channel, - layer->overlay, false, 0, old_zpos); + layer->overlay, false, 0); return; } -@@ -295,7 +265,7 @@ static void sun8i_ui_layer_atomic_update +@@ -328,7 +298,7 @@ static void sun8i_ui_layer_atomic_update sun8i_ui_layer_update_buffer(mixer, layer->channel, layer->overlay, plane); sun8i_ui_layer_enable(mixer, layer->channel, layer->overlay, @@ -234,10 +234,10 @@ Signed-off-by: Jernej Skrabec + mixer->channel_zpos[channel] = enable ? zpos : -1; } - static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, -@@ -370,11 +344,9 @@ static void sun8i_vi_layer_atomic_disabl - struct drm_plane_state *old_state) - { + static void sun8i_vi_layer_update_alpha(struct sun8i_mixer *mixer, int channel, +@@ -398,11 +372,9 @@ static void sun8i_vi_layer_atomic_disabl + struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, + plane); struct sun8i_vi_layer *layer = plane_to_sun8i_vi_layer(plane); - unsigned int old_zpos = old_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; @@ -248,21 +248,21 @@ Signed-off-by: Jernej Skrabec } static void sun8i_vi_layer_atomic_update(struct drm_plane *plane, -@@ -382,12 +354,11 @@ static void sun8i_vi_layer_atomic_update - { +@@ -414,12 +386,11 @@ static void sun8i_vi_layer_atomic_update + plane); struct sun8i_vi_layer *layer = plane_to_sun8i_vi_layer(plane); - unsigned int zpos = plane->state->normalized_zpos; + unsigned int zpos = new_state->normalized_zpos; - unsigned int old_zpos = old_state->normalized_zpos; struct sun8i_mixer *mixer = layer->mixer; - if (!plane->state->visible) { + if (!new_state->visible) { sun8i_vi_layer_enable(mixer, layer->channel, - layer->overlay, false, 0, old_zpos); + layer->overlay, false, 0); return; } -@@ -398,7 +369,7 @@ static void sun8i_vi_layer_atomic_update +@@ -432,7 +403,7 @@ static void sun8i_vi_layer_atomic_update sun8i_vi_layer_update_buffer(mixer, layer->channel, layer->overlay, plane); sun8i_vi_layer_enable(mixer, layer->channel, layer->overlay, diff --git a/projects/Allwinner/patches/linux/0036-drm-sun4i-Don-t-use-update-regmap-variant-for-blend-.patch b/projects/Allwinner/patches/linux/0026-drm-sun4i-Don-t-use-update-regmap-variant-for-blend-.patch similarity index 100% rename from projects/Allwinner/patches/linux/0036-drm-sun4i-Don-t-use-update-regmap-variant-for-blend-.patch rename to projects/Allwinner/patches/linux/0026-drm-sun4i-Don-t-use-update-regmap-variant-for-blend-.patch diff --git a/projects/Allwinner/patches/linux/0037-drm-sun4i-mixer-Add-caching-support.patch b/projects/Allwinner/patches/linux/0027-drm-sun4i-mixer-Add-caching-support.patch similarity index 100% rename from projects/Allwinner/patches/linux/0037-drm-sun4i-mixer-Add-caching-support.patch rename to projects/Allwinner/patches/linux/0027-drm-sun4i-mixer-Add-caching-support.patch diff --git a/projects/Allwinner/patches/linux/0038-mfd-Add-support-for-AC200.patch b/projects/Allwinner/patches/linux/0028-mfd-Add-support-for-AC200.patch similarity index 100% rename from projects/Allwinner/patches/linux/0038-mfd-Add-support-for-AC200.patch rename to projects/Allwinner/patches/linux/0028-mfd-Add-support-for-AC200.patch diff --git a/projects/Allwinner/patches/linux/0039-net-phy-Add-support-for-AC200-EPHY.patch b/projects/Allwinner/patches/linux/0029-net-phy-Add-support-for-AC200-EPHY.patch similarity index 100% rename from projects/Allwinner/patches/linux/0039-net-phy-Add-support-for-AC200-EPHY.patch rename to projects/Allwinner/patches/linux/0029-net-phy-Add-support-for-AC200-EPHY.patch diff --git a/projects/Allwinner/patches/linux/0040-wip-H6-deinterlace.patch b/projects/Allwinner/patches/linux/0030-wip-H6-deinterlace.patch similarity index 99% rename from projects/Allwinner/patches/linux/0040-wip-H6-deinterlace.patch rename to projects/Allwinner/patches/linux/0030-wip-H6-deinterlace.patch index b5bb79679e..7c5eec8a1c 100644 --- a/projects/Allwinner/patches/linux/0040-wip-H6-deinterlace.patch +++ b/projects/Allwinner/patches/linux/0030-wip-H6-deinterlace.patch @@ -17,7 +17,7 @@ Signed-off-by: Jernej Skrabec --- a/drivers/media/platform/Kconfig +++ b/drivers/media/platform/Kconfig -@@ -510,6 +510,19 @@ config VIDEO_QCOM_VENUS +@@ -574,6 +574,19 @@ config VIDEO_QCOM_VENUS on various Qualcomm SoCs. To compile this driver as a module choose m here. diff --git a/projects/Allwinner/patches/linux/0041-arm64-dts-h6-deinterlace.patch b/projects/Allwinner/patches/linux/0031-arm64-dts-h6-deinterlace.patch similarity index 97% rename from projects/Allwinner/patches/linux/0041-arm64-dts-h6-deinterlace.patch rename to projects/Allwinner/patches/linux/0031-arm64-dts-h6-deinterlace.patch index 87ec6f74f5..5d18560bb7 100644 --- a/projects/Allwinner/patches/linux/0041-arm64-dts-h6-deinterlace.patch +++ b/projects/Allwinner/patches/linux/0031-arm64-dts-h6-deinterlace.patch @@ -10,7 +10,7 @@ Signed-off-by: Jernej Skrabec --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -153,6 +153,17 @@ +@@ -160,6 +160,17 @@ }; }; diff --git a/projects/Allwinner/patches/linux/0042-ASoC-sun4i-i2s-Add-parenthesis-around-macro-argument.patch b/projects/Allwinner/patches/linux/0032-ASoC-sun4i-i2s-Add-parenthesis-around-macro-argument.patch similarity index 100% rename from projects/Allwinner/patches/linux/0042-ASoC-sun4i-i2s-Add-parenthesis-around-macro-argument.patch rename to projects/Allwinner/patches/linux/0032-ASoC-sun4i-i2s-Add-parenthesis-around-macro-argument.patch diff --git a/projects/Allwinner/patches/linux/0043-WIP-I2S-multi-channel.patch b/projects/Allwinner/patches/linux/0033-WIP-I2S-multi-channel.patch similarity index 97% rename from projects/Allwinner/patches/linux/0043-WIP-I2S-multi-channel.patch rename to projects/Allwinner/patches/linux/0033-WIP-I2S-multi-channel.patch index 520eca52ee..3dfb5efe03 100644 --- a/projects/Allwinner/patches/linux/0043-WIP-I2S-multi-channel.patch +++ b/projects/Allwinner/patches/linux/0033-WIP-I2S-multi-channel.patch @@ -230,7 +230,7 @@ Signed-off-by: Jernej Skrabec regmap_update_bits(i2s->regmap, SUN50I_H6_I2S_RX_CHAN_SEL_REG, SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET_MASK, SUN50I_H6_I2S_TX_CHAN_SEL_OFFSET(offset)); -@@ -1198,8 +1239,14 @@ static const struct reg_default sun8i_i2 +@@ -1196,8 +1237,14 @@ static const struct reg_default sun8i_i2 { SUN4I_I2S_DMA_INT_CTRL_REG, 0x00000000 }, { SUN4I_I2S_CLK_DIV_REG, 0x00000000 }, { SUN8I_I2S_CHAN_CFG_REG, 0x00000000 }, @@ -247,7 +247,7 @@ Signed-off-by: Jernej Skrabec { SUN8I_I2S_RX_CHAN_SEL_REG, 0x00000000 }, { SUN8I_I2S_RX_CHAN_MAP_REG, 0x00000000 }, }; -@@ -1212,9 +1259,18 @@ static const struct reg_default sun50i_h +@@ -1210,9 +1257,18 @@ static const struct reg_default sun50i_h { SUN4I_I2S_DMA_INT_CTRL_REG, 0x00000000 }, { SUN4I_I2S_CLK_DIV_REG, 0x00000000 }, { SUN8I_I2S_CHAN_CFG_REG, 0x00000000 }, @@ -269,7 +269,7 @@ Signed-off-by: Jernej Skrabec { SUN50I_H6_I2S_RX_CHAN_SEL_REG, 0x00000000 }, { SUN50I_H6_I2S_RX_CHAN_MAP0_REG, 0x00000000 }, { SUN50I_H6_I2S_RX_CHAN_MAP1_REG, 0x00000000 }, -@@ -1287,7 +1343,7 @@ static int sun4i_i2s_runtime_resume(stru +@@ -1285,7 +1341,7 @@ static int sun4i_i2s_runtime_resume(stru /* Enable the first output line */ regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG, SUN4I_I2S_CTRL_SDO_EN_MASK, @@ -278,7 +278,7 @@ Signed-off-by: Jernej Skrabec ret = clk_prepare_enable(i2s->mod_clk); if (ret) { -@@ -1529,6 +1585,7 @@ static int sun4i_i2s_probe(struct platfo +@@ -1527,6 +1583,7 @@ static int sun4i_i2s_probe(struct platfo i2s->capture_dma_data.addr = res->start + SUN4I_I2S_FIFO_RX_REG; i2s->capture_dma_data.maxburst = 8; diff --git a/projects/Allwinner/patches/linux/0033-media-cedrus-Add-support-for-VP8-decoding.patch b/projects/Allwinner/patches/linux/0033-media-cedrus-Add-support-for-VP8-decoding.patch deleted file mode 100644 index 6c4320868b..0000000000 --- a/projects/Allwinner/patches/linux/0033-media-cedrus-Add-support-for-VP8-decoding.patch +++ /dev/null @@ -1,985 +0,0 @@ -From 574ba48fa87225fbf3e39ffd2b11a6fb93cb6c98 Mon Sep 17 00:00:00 2001 -From: Jernej Skrabec -Date: Wed, 20 May 2020 23:01:29 +0200 -Subject: [PATCH 33/44] media: cedrus: Add support for VP8 decoding - -VP8 in Cedrus shares same engine as H264. - -Note that it seems necessary to call bitstream parsing functions, -to parse frame header, otherwise decoded image is garbage. This is -contrary to what is driver supposed to do. However, values are not -really used, so this might be acceptable. It's possible that bitstream -parsing functions set some internal VPU state, which is later necessary -for proper decoding. Biggest suspect is "VP8 probs update" trigger. - -Signed-off-by: Jernej Skrabec ---- - drivers/staging/media/sunxi/cedrus/Makefile | 3 +- - drivers/staging/media/sunxi/cedrus/cedrus.c | 8 + - drivers/staging/media/sunxi/cedrus/cedrus.h | 15 + - .../staging/media/sunxi/cedrus/cedrus_dec.c | 5 + - .../staging/media/sunxi/cedrus/cedrus_hw.c | 1 + - .../staging/media/sunxi/cedrus/cedrus_regs.h | 80 ++ - .../staging/media/sunxi/cedrus/cedrus_video.c | 9 + - .../staging/media/sunxi/cedrus/cedrus_vp8.c | 699 ++++++++++++++++++ - 8 files changed, 819 insertions(+), 1 deletion(-) - create mode 100644 drivers/staging/media/sunxi/cedrus/cedrus_vp8.c - ---- a/drivers/staging/media/sunxi/cedrus/Makefile -+++ b/drivers/staging/media/sunxi/cedrus/Makefile -@@ -2,4 +2,5 @@ - obj-$(CONFIG_VIDEO_SUNXI_CEDRUS) += sunxi-cedrus.o - - sunxi-cedrus-y = cedrus.o cedrus_video.o cedrus_hw.o cedrus_dec.o \ -- cedrus_mpeg2.o cedrus_h264.o cedrus_h265.o -+ cedrus_mpeg2.o cedrus_h264.o cedrus_h265.o \ -+ cedrus_vp8.o ---- a/drivers/staging/media/sunxi/cedrus/cedrus.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.c -@@ -195,6 +195,13 @@ static const struct cedrus_control cedru - .codec = CEDRUS_CODEC_H265, - .required = false, - }, -+ { -+ .cfg = { -+ .id = V4L2_CID_MPEG_VIDEO_VP8_FRAME_HEADER, -+ }, -+ .codec = CEDRUS_CODEC_VP8, -+ .required = true, -+ }, - }; - - #define CEDRUS_CONTROLS_COUNT ARRAY_SIZE(cedrus_controls) -@@ -446,6 +453,7 @@ static int cedrus_probe(struct platform_ - dev->dec_ops[CEDRUS_CODEC_MPEG2] = &cedrus_dec_ops_mpeg2; - dev->dec_ops[CEDRUS_CODEC_H264] = &cedrus_dec_ops_h264; - dev->dec_ops[CEDRUS_CODEC_H265] = &cedrus_dec_ops_h265; -+ dev->dec_ops[CEDRUS_CODEC_VP8] = &cedrus_dec_ops_vp8; - - mutex_init(&dev->dev_mutex); - ---- a/drivers/staging/media/sunxi/cedrus/cedrus.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus.h -@@ -36,6 +36,7 @@ enum cedrus_codec { - CEDRUS_CODEC_MPEG2, - CEDRUS_CODEC_H264, - CEDRUS_CODEC_H265, -+ CEDRUS_CODEC_VP8, - CEDRUS_CODEC_LAST, - }; - -@@ -78,6 +79,10 @@ struct cedrus_h265_run { - const struct v4l2_ctrl_hevc_scaling_matrix *scaling_matrix; - }; - -+struct cedrus_vp8_run { -+ const struct v4l2_ctrl_vp8_frame_header *slice_params; -+}; -+ - struct cedrus_run { - struct vb2_v4l2_buffer *src; - struct vb2_v4l2_buffer *dst; -@@ -86,6 +91,7 @@ struct cedrus_run { - struct cedrus_h264_run h264; - struct cedrus_mpeg2_run mpeg2; - struct cedrus_h265_run h265; -+ struct cedrus_vp8_run vp8; - }; - }; - -@@ -143,6 +149,14 @@ struct cedrus_ctx { - void *entry_points_buf; - dma_addr_t entry_points_buf_addr; - } h265; -+ struct { -+ unsigned int last_frame_p_type; -+ unsigned int last_filter_type; -+ unsigned int last_sharpness_level; -+ -+ u8 *entropy_probs_buf; -+ dma_addr_t entropy_probs_buf_dma; -+ } vp8; - } codec; - }; - -@@ -190,6 +204,7 @@ struct cedrus_dev { - extern struct cedrus_dec_ops cedrus_dec_ops_mpeg2; - extern struct cedrus_dec_ops cedrus_dec_ops_h264; - extern struct cedrus_dec_ops cedrus_dec_ops_h265; -+extern struct cedrus_dec_ops cedrus_dec_ops_vp8; - - static inline void cedrus_write(struct cedrus_dev *dev, u32 reg, u32 val) - { ---- a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c -@@ -72,6 +72,11 @@ void cedrus_device_run(void *priv) - V4L2_CID_MPEG_VIDEO_HEVC_SCALING_MATRIX); - break; - -+ case V4L2_PIX_FMT_VP8_FRAME: -+ run.vp8.slice_params = cedrus_find_control_data(ctx, -+ V4L2_CID_MPEG_VIDEO_VP8_FRAME_HEADER); -+ break; -+ - default: - break; - } ---- a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c -@@ -48,6 +48,7 @@ int cedrus_engine_enable(struct cedrus_c - break; - - case CEDRUS_CODEC_H264: -+ case CEDRUS_CODEC_VP8: - reg |= VE_MODE_DEC_H264; - break; - ---- a/drivers/staging/media/sunxi/cedrus/cedrus_regs.h -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_regs.h -@@ -552,6 +552,7 @@ - #define VE_H264_SHS_QP_SCALING_MATRIX_DEFAULT BIT(24) - - #define VE_H264_CTRL 0x220 -+#define VE_H264_CTRL_VP8 BIT(29) - #define VE_H264_CTRL_VLD_DATA_REQ_INT BIT(2) - #define VE_H264_CTRL_DECODE_ERR_INT BIT(1) - #define VE_H264_CTRL_SLICE_DECODE_INT BIT(0) -@@ -561,7 +562,12 @@ - VE_H264_CTRL_SLICE_DECODE_INT) - - #define VE_H264_TRIGGER_TYPE 0x224 -+#define VE_H264_TRIGGER_TYPE_PROBABILITY(x) SHIFT_AND_MASK_BITS(x, 31, 24) -+#define VE_H264_TRIGGER_TYPE_BIN_LENS(x) SHIFT_AND_MASK_BITS((x) - 1, 18, 16) - #define VE_H264_TRIGGER_TYPE_N_BITS(x) (((x) & 0x3f) << 8) -+#define VE_H264_TRIGGER_TYPE_VP8_GET_BITS (15 << 0) -+#define VE_H264_TRIGGER_TYPE_VP8_UPDATE_COEF (14 << 0) -+#define VE_H264_TRIGGER_TYPE_VP8_SLICE_DECODE (10 << 0) - #define VE_H264_TRIGGER_TYPE_AVC_SLICE_DECODE (8 << 0) - #define VE_H264_TRIGGER_TYPE_INIT_SWDEC (7 << 0) - #define VE_H264_TRIGGER_TYPE_FLUSH_BITS (3 << 0) -@@ -571,6 +577,7 @@ - #define VE_H264_STATUS_DECODE_ERR_INT VE_H264_CTRL_DECODE_ERR_INT - #define VE_H264_STATUS_SLICE_DECODE_INT VE_H264_CTRL_SLICE_DECODE_INT - #define VE_H264_STATUS_VLD_BUSY BIT(8) -+#define VE_H264_STATUS_VP8_UPPROB_BUSY BIT(17) - - #define VE_H264_STATUS_INT_MASK VE_H264_CTRL_INT_MASK - -@@ -589,10 +596,83 @@ - #define VE_H264_OUTPUT_FRAME_IDX 0x24c - #define VE_H264_EXTRA_BUFFER1 0x250 - #define VE_H264_EXTRA_BUFFER2 0x254 -+#define VE_H264_MB_ADDR 0x260 -+#define VE_H264_ERROR_CASE 0x2b8 - #define VE_H264_BASIC_BITS 0x2dc - #define VE_AVC_SRAM_PORT_OFFSET 0x2e0 - #define VE_AVC_SRAM_PORT_DATA 0x2e4 - -+#define VE_VP8_PPS 0x214 -+#define VE_VP8_PPS_PIC_TYPE_P_FRAME BIT(31) -+#define VE_VP8_PPS_LAST_SHARPNESS_LEVEL(v) SHIFT_AND_MASK_BITS(v, 30, 28) -+#define VE_VP8_PPS_LAST_PIC_TYPE_P_FRAME BIT(27) -+#define VE_VP8_PPS_ALTREF_SIGN_BIAS BIT(26) -+#define VE_VP8_PPS_GOLDEN_SIGN_BIAS BIT(25) -+#define VE_VP8_PPS_RELOAD_ENTROPY_PROBS BIT(24) -+#define VE_VP8_PPS_REFRESH_ENTROPY_PROBS BIT(23) -+#define VE_VP8_PPS_MB_NO_COEFF_SKIP BIT(22) -+#define VE_VP8_PPS_TOKEN_PARTITION(v) SHIFT_AND_MASK_BITS(v, 21, 20) -+#define VE_VP8_PPS_MODE_REF_LF_DELTA_UPDATE BIT(19) -+#define VE_VP8_PPS_MODE_REF_LF_DELTA_ENABLE BIT(18) -+#define VE_VP8_PPS_LOOP_FILTER_LEVEL(v) SHIFT_AND_MASK_BITS(v, 17, 12) -+#define VE_VP8_PPS_LOOP_FILTER_SIMPLE BIT(11) -+#define VE_VP8_PPS_SHARPNESS_LEVEL(v) SHIFT_AND_MASK_BITS(v, 10, 8) -+#define VE_VP8_PPS_LAST_LOOP_FILTER_SIMPLE BIT(7) -+#define VE_VP8_PPS_SEGMENTATION_ENABLE BIT(6) -+#define VE_VP8_PPS_MB_SEGMENT_ABS_DELTA BIT(5) -+#define VE_VP8_PPS_UPDATE_MB_SEGMENTATION_MAP BIT(4) -+#define VE_VP8_PPS_FULL_PIXEL BIT(3) -+#define VE_VP8_PPS_BILINEAR_MC_FILTER BIT(2) -+#define VE_VP8_PPS_FILTER_TYPE_SIMPLE BIT(1) -+#define VE_VP8_PPS_LPF_DISABLE BIT(0) -+ -+#define VE_VP8_QP_INDEX_DELTA 0x218 -+#define VE_VP8_QP_INDEX_DELTA_UVAC(v) SHIFT_AND_MASK_BITS(v, 31, 27) -+#define VE_VP8_QP_INDEX_DELTA_UVDC(v) SHIFT_AND_MASK_BITS(v, 26, 22) -+#define VE_VP8_QP_INDEX_DELTA_Y2AC(v) SHIFT_AND_MASK_BITS(v, 21, 17) -+#define VE_VP8_QP_INDEX_DELTA_Y2DC(v) SHIFT_AND_MASK_BITS(v, 16, 12) -+#define VE_VP8_QP_INDEX_DELTA_Y1DC(v) SHIFT_AND_MASK_BITS(v, 11, 7) -+#define VE_VP8_QP_INDEX_DELTA_BASE_QINDEX(v) SHIFT_AND_MASK_BITS(v, 6, 0) -+ -+#define VE_VP8_PART_SIZE_OFFSET 0x21c -+#define VE_VP8_ENTROPY_PROBS_ADDR 0x250 -+#define VE_VP8_FIRST_DATA_PART_LEN 0x254 -+ -+#define VE_VP8_FSIZE 0x258 -+#define VE_VP8_FSIZE_WIDTH(w) \ -+ SHIFT_AND_MASK_BITS(DIV_ROUND_UP(w, 16), 15, 8) -+#define VE_VP8_FSIZE_HEIGHT(h) \ -+ SHIFT_AND_MASK_BITS(DIV_ROUND_UP(h, 16), 7, 0) -+ -+#define VE_VP8_PICSIZE 0x25c -+#define VE_VP8_PICSIZE_WIDTH(w) SHIFT_AND_MASK_BITS(w, 27, 16) -+#define VE_VP8_PICSIZE_HEIGHT(h) SHIFT_AND_MASK_BITS(h, 11, 0) -+ -+#define VE_VP8_REC_LUMA 0x2ac -+#define VE_VP8_FWD_LUMA 0x2b0 -+#define VE_VP8_BWD_LUMA 0x2b4 -+#define VE_VP8_REC_CHROMA 0x2d0 -+#define VE_VP8_FWD_CHROMA 0x2d4 -+#define VE_VP8_BWD_CHROMA 0x2d8 -+#define VE_VP8_ALT_LUMA 0x2e8 -+#define VE_VP8_ALT_CHROMA 0x2ec -+ -+#define VE_VP8_SEGMENT_FEAT_MB_LV0 0x2f0 -+#define VE_VP8_SEGMENT_FEAT_MB_LV1 0x2f4 -+ -+#define VE_VP8_SEGMENT3(v) SHIFT_AND_MASK_BITS(v, 31, 24) -+#define VE_VP8_SEGMENT2(v) SHIFT_AND_MASK_BITS(v, 23, 16) -+#define VE_VP8_SEGMENT1(v) SHIFT_AND_MASK_BITS(v, 15, 8) -+#define VE_VP8_SEGMENT0(v) SHIFT_AND_MASK_BITS(v, 7, 0) -+ -+#define VE_VP8_REF_LF_DELTA 0x2f8 -+#define VE_VP8_MODE_LF_DELTA 0x2fc -+ -+#define VE_VP8_LF_DELTA3(v) SHIFT_AND_MASK_BITS(v, 30, 24) -+#define VE_VP8_LF_DELTA2(v) SHIFT_AND_MASK_BITS(v, 22, 16) -+#define VE_VP8_LF_DELTA1(v) SHIFT_AND_MASK_BITS(v, 14, 8) -+#define VE_VP8_LF_DELTA0(v) SHIFT_AND_MASK_BITS(v, 6, 0) -+ - #define VE_ISP_INPUT_SIZE 0xa00 - #define VE_ISP_INPUT_STRIDE 0xa04 - #define VE_ISP_CTRL 0xa08 ---- a/drivers/staging/media/sunxi/cedrus/cedrus_video.c -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_video.c -@@ -49,6 +49,10 @@ static struct cedrus_format cedrus_forma - .capabilities = CEDRUS_CAPABILITY_H265_DEC, - }, - { -+ .pixelformat = V4L2_PIX_FMT_VP8_FRAME, -+ .directions = CEDRUS_DECODE_SRC, -+ }, -+ { - .pixelformat = V4L2_PIX_FMT_SUNXI_TILED_NV12, - .directions = CEDRUS_DECODE_DST, - }, -@@ -110,6 +114,7 @@ void cedrus_prepare_format(struct v4l2_p - case V4L2_PIX_FMT_MPEG2_SLICE: - case V4L2_PIX_FMT_H264_SLICE: - case V4L2_PIX_FMT_HEVC_SLICE: -+ case V4L2_PIX_FMT_VP8_FRAME: - /* Zero bytes per line for encoded source. */ - bytesperline = 0; - /* Choose some minimum size since this can't be 0 */ -@@ -506,6 +511,10 @@ static int cedrus_start_streaming(struct - ctx->current_codec = CEDRUS_CODEC_H265; - break; - -+ case V4L2_PIX_FMT_VP8_FRAME: -+ ctx->current_codec = CEDRUS_CODEC_VP8; -+ break; -+ - default: - return -EINVAL; - } ---- /dev/null -+++ b/drivers/staging/media/sunxi/cedrus/cedrus_vp8.c -@@ -0,0 +1,699 @@ -+// SPDX-License-Identifier: GPL-2.0-or-later -+/* -+ * Cedrus VPU driver -+ * -+ * Copyright (c) 2019 Jernej Skrabec -+ */ -+ -+#include -+#include -+ -+#include -+ -+#include "cedrus.h" -+#include "cedrus_hw.h" -+#include "cedrus_regs.h" -+ -+#define CEDRUS_ENTROPY_PROBS_SIZE 0x2400 -+#define VP8_PROB_HALF 128 -+ -+static const u8 prob_table_init[] = { -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xB0, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xF1, 0xFC, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xF9, 0xFD, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF4, 0xFC, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xEA, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xF6, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xEF, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFE, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFD, 0xFE, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFB, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFE, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xE1, 0xFC, 0xF1, 0xFD, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xEA, 0xFA, 0xF1, 0xFA, 0xFD, 0xFF, 0xFD, 0xFE, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFD, 0xFE, 0xFE, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF8, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFE, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFD, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xF7, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0xFD, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xBA, 0xFB, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xFB, 0xF4, 0xFE, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFB, 0xFB, 0xF3, 0xFD, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFD, 0xFE, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xEC, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFD, 0xFD, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFE, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFE, 0xF9, 0xFD, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFD, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFD, 0xFD, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFC, 0xFE, 0xFB, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0xFC, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xF8, 0xFE, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFB, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFB, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFD, 0xFE, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFB, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFD, 0xFE, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xF9, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x9C, 0xA3, 0x80, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x6F, 0x96, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x78, 0x5A, 0x4F, 0x85, 0x57, 0x55, 0x50, 0x6F, -+ 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x93, 0x88, 0x12, 0x00, 0x6A, 0x91, 0x01, 0x00, 0xB3, 0x79, 0x01, 0x00, -+ 0xDF, 0x01, 0x22, 0x00, 0xD0, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x01, 0x8F, -+ 0x0E, 0x12, 0x0E, 0x6B, 0x87, 0x40, 0x39, 0x44, 0x3C, 0x38, 0x80, 0x41, -+ 0x9F, 0x86, 0x80, 0x22, 0xEA, 0xBC, 0x80, 0x1C, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x84, 0x02, 0x04, 0x06, 0x80, 0x81, 0x82, 0x83, 0x80, 0x02, 0x04, 0x06, -+ 0x81, 0x82, 0x83, 0x84, 0x80, 0x02, 0x81, 0x04, 0x82, 0x83, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, -+ 0x04, 0x06, 0x80, 0x81, 0x82, 0x83, 0x0A, 0x0C, 0x84, 0x85, 0x86, 0x87, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x08, 0x04, 0x06, 0x80, 0x81, -+ 0x82, 0x83, 0x0A, 0x0C, 0x84, 0x85, 0x86, 0x87, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x83, 0x02, 0x82, 0x04, 0x80, 0x81, 0x00, 0x00, 0x80, 0x02, 0x81, 0x04, -+ 0x82, 0x06, 0x08, 0x0C, 0x83, 0x0A, 0x85, 0x86, 0x84, 0x0E, 0x87, 0x10, -+ 0x88, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x8A, 0x02, 0x8B, 0x04, 0x8C, 0x8D, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x87, 0x02, 0x85, 0x04, 0x86, 0x06, 0x88, 0x89, -+}; -+ -+static const u8 vp8_mv_update_prob[2][19] = { -+ { 237, 246, 253, 253, 254, 254, 254, 254, 254, -+ 254, 254, 254, 254, 254, 250, 250, 252, 254, 254 }, -+ { 231, 243, 245, 253, 254, 254, 254, 254, 254, -+ 254, 254, 254, 254, 254, 251, 251, 254, 254, 254 } -+}; -+ -+static uint8_t read_bits(struct cedrus_dev *dev, unsigned int bits_count, -+ unsigned int probability) -+{ -+ cedrus_write(dev, VE_H264_TRIGGER_TYPE, -+ VE_H264_TRIGGER_TYPE_VP8_GET_BITS | -+ VE_H264_TRIGGER_TYPE_BIN_LENS(bits_count) | -+ VE_H264_TRIGGER_TYPE_PROBABILITY(probability)); -+ -+ while (cedrus_read(dev, VE_H264_STATUS) & VE_H264_STATUS_VLD_BUSY) -+ ; -+ -+ return cedrus_read(dev, VE_H264_BASIC_BITS); -+} -+ -+static void get_delta_q(struct cedrus_dev *dev) -+{ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 4, VP8_PROB_HALF); -+ read_bits(dev, 1, VP8_PROB_HALF); -+ } -+} -+ -+static void process_segmentation_info(struct cedrus_dev *dev) -+{ -+ int update = read_bits(dev, 1, VP8_PROB_HALF); -+ int i; -+ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 1, VP8_PROB_HALF); -+ -+ for (i = 0; i < 4; i++) -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 7, VP8_PROB_HALF); -+ read_bits(dev, 1, VP8_PROB_HALF); -+ } -+ -+ for (i = 0; i < 4; i++) -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 6, VP8_PROB_HALF); -+ read_bits(dev, 1, VP8_PROB_HALF); -+ } -+ } -+ -+ if (update) -+ for (i = 0; i < 3; i++) -+ if (read_bits(dev, 1, VP8_PROB_HALF)) -+ read_bits(dev, 8, VP8_PROB_HALF); -+} -+ -+static void process_ref_lf_delta_info(struct cedrus_dev *dev) -+{ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ int i; -+ -+ for (i = 0; i < 4; i++) -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 6, VP8_PROB_HALF); -+ read_bits(dev, 1, VP8_PROB_HALF); -+ } -+ -+ for (i = 0; i < 4; i++) -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 6, VP8_PROB_HALF); -+ read_bits(dev, 1, VP8_PROB_HALF); -+ } -+ } -+} -+ -+static void process_ref_frame_info(struct cedrus_dev *dev) -+{ -+ u8 refresh_golden_frame = read_bits(dev, 1, VP8_PROB_HALF); -+ u8 refresh_alt_ref_frame = read_bits(dev, 1, VP8_PROB_HALF); -+ -+ if (!refresh_golden_frame) -+ read_bits(dev, 2, VP8_PROB_HALF); -+ -+ if (!refresh_alt_ref_frame) -+ read_bits(dev, 2, VP8_PROB_HALF); -+ -+ read_bits(dev, 1, VP8_PROB_HALF); -+ read_bits(dev, 1, VP8_PROB_HALF); -+} -+ -+static void cedrus_read_header(struct cedrus_dev *dev, -+ const struct v4l2_ctrl_vp8_frame_header *slice) -+{ -+ int i, j; -+ -+ if (VP8_FRAME_IS_KEY_FRAME(slice)) { -+ read_bits(dev, 1, VP8_PROB_HALF); -+ read_bits(dev, 1, VP8_PROB_HALF); -+ } -+ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) -+ process_segmentation_info(dev); -+ -+ read_bits(dev, 1, VP8_PROB_HALF); -+ read_bits(dev, 6, VP8_PROB_HALF); -+ read_bits(dev, 3, VP8_PROB_HALF); -+ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) -+ process_ref_lf_delta_info(dev); -+ -+ read_bits(dev, 2, VP8_PROB_HALF); -+ read_bits(dev, 7, VP8_PROB_HALF); -+ -+ get_delta_q(dev); -+ get_delta_q(dev); -+ get_delta_q(dev); -+ get_delta_q(dev); -+ get_delta_q(dev); -+ -+ if (!VP8_FRAME_IS_KEY_FRAME(slice)) -+ process_ref_frame_info(dev); -+ -+ read_bits(dev, 1, VP8_PROB_HALF); -+ -+ if (!VP8_FRAME_IS_KEY_FRAME(slice)) -+ read_bits(dev, 1, VP8_PROB_HALF); -+ -+ cedrus_write(dev, VE_H264_TRIGGER_TYPE, VE_H264_TRIGGER_TYPE_VP8_UPDATE_COEF); -+ while (cedrus_read(dev, VE_H264_STATUS) & VE_H264_STATUS_VP8_UPPROB_BUSY) -+ ; -+ -+ cedrus_write(dev, VE_H264_STATUS, VE_H264_CTRL_INT_MASK); -+ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) -+ read_bits(dev, 8, VP8_PROB_HALF); -+ -+ if (!VP8_FRAME_IS_KEY_FRAME(slice)) { -+ read_bits(dev, 8, VP8_PROB_HALF); -+ read_bits(dev, 8, VP8_PROB_HALF); -+ read_bits(dev, 8, VP8_PROB_HALF); -+ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 8, VP8_PROB_HALF); -+ read_bits(dev, 8, VP8_PROB_HALF); -+ read_bits(dev, 8, VP8_PROB_HALF); -+ read_bits(dev, 8, VP8_PROB_HALF); -+ } -+ -+ if (read_bits(dev, 1, VP8_PROB_HALF)) { -+ read_bits(dev, 8, VP8_PROB_HALF); -+ read_bits(dev, 8, VP8_PROB_HALF); -+ read_bits(dev, 8, VP8_PROB_HALF); -+ } -+ -+ for (i = 0; i < 2; i++) -+ for (j = 0; j < 19; j++) -+ if (read_bits(dev, 1, vp8_mv_update_prob[i][j])) -+ read_bits(dev, 7, VP8_PROB_HALF); -+ } -+} -+ -+static void cedrus_vp8_update_probs(const struct v4l2_ctrl_vp8_frame_header *slice, -+ u8 *prob_table) -+{ -+ int i, j, k; -+ -+ memcpy(&prob_table[0x1008], slice->entropy_header.y_mode_probs, 4); -+ memcpy(&prob_table[0x1010], slice->entropy_header.uv_mode_probs, 3); -+ -+ memcpy(&prob_table[0x1018], slice->segment_header.segment_probs, 3); -+ -+ prob_table[0x101c] = slice->prob_skip_false; -+ prob_table[0x101d] = slice->prob_intra; -+ prob_table[0x101e] = slice->prob_last; -+ prob_table[0x101f] = slice->prob_gf; -+ -+ memcpy(&prob_table[0x1020], slice->entropy_header.mv_probs[0], 19); -+ memcpy(&prob_table[0x1040], slice->entropy_header.mv_probs[1], 19); -+ -+ for (i = 0; i < 4; ++i) -+ for (j = 0; j < 8; ++j) -+ for (k = 0; k < 3; ++k) -+ memcpy(&prob_table[i * 512 + j * 64 + k * 16], -+ slice->entropy_header.coeff_probs[i][j][k], 11); -+} -+ -+static enum cedrus_irq_status -+cedrus_vp8_irq_status(struct cedrus_ctx *ctx) -+{ -+ struct cedrus_dev *dev = ctx->dev; -+ u32 reg = cedrus_read(dev, VE_H264_STATUS); -+ -+ if (reg & (VE_H264_STATUS_DECODE_ERR_INT | -+ VE_H264_STATUS_VLD_DATA_REQ_INT)) -+ return CEDRUS_IRQ_ERROR; -+ -+ if (reg & VE_H264_CTRL_SLICE_DECODE_INT) -+ return CEDRUS_IRQ_OK; -+ -+ return CEDRUS_IRQ_NONE; -+} -+ -+static void cedrus_vp8_irq_clear(struct cedrus_ctx *ctx) -+{ -+ struct cedrus_dev *dev = ctx->dev; -+ -+ cedrus_write(dev, VE_H264_STATUS, -+ VE_H264_STATUS_INT_MASK); -+} -+ -+static void cedrus_vp8_irq_disable(struct cedrus_ctx *ctx) -+{ -+ struct cedrus_dev *dev = ctx->dev; -+ u32 reg = cedrus_read(dev, VE_H264_CTRL); -+ -+ cedrus_write(dev, VE_H264_CTRL, -+ reg & ~VE_H264_CTRL_INT_MASK); -+} -+ -+static void cedrus_vp8_setup(struct cedrus_ctx *ctx, -+ struct cedrus_run *run) -+{ -+ const struct v4l2_ctrl_vp8_frame_header *slice = run->vp8.slice_params; -+ struct vb2_queue *cap_q = &ctx->fh.m2m_ctx->cap_q_ctx.q; -+ struct vb2_buffer *src_buf = &run->src->vb2_buf; -+ struct cedrus_dev *dev = ctx->dev; -+ dma_addr_t luma_addr, chroma_addr; -+ dma_addr_t src_buf_addr; -+ int header_size; -+ int qindex; -+ u32 reg; -+ -+ cedrus_engine_enable(ctx, CEDRUS_CODEC_VP8); -+ -+ cedrus_write(dev, VE_H264_CTRL, VE_H264_CTRL_VP8); -+ -+ cedrus_vp8_update_probs(slice, ctx->codec.vp8.entropy_probs_buf); -+ -+ reg = slice->first_part_size * 8; -+ cedrus_write(dev, VE_VP8_FIRST_DATA_PART_LEN, reg); -+ -+ header_size = VP8_FRAME_IS_KEY_FRAME(slice) ? 10 : 3; -+ -+ reg = slice->first_part_size + header_size; -+ cedrus_write(dev, VE_VP8_PART_SIZE_OFFSET, reg); -+ -+ reg = vb2_plane_size(src_buf, 0) * 8; -+ cedrus_write(dev, VE_H264_VLD_LEN, reg); -+ -+ /* -+ * FIXME: There is a problem if frame header is skipped (adding -+ * first_part_header_bits to offset). It seems that functions -+ * for parsing bitstreams change internal state of VPU in some -+ * way that can't be otherwise set. Maybe this can be bypassed -+ * by somehow fixing probability table buffer? -+ */ -+ reg = header_size * 8; -+ cedrus_write(dev, VE_H264_VLD_OFFSET, reg); -+ -+ src_buf_addr = vb2_dma_contig_plane_dma_addr(src_buf, 0); -+ cedrus_write(dev, VE_H264_VLD_END, -+ src_buf_addr + vb2_get_plane_payload(src_buf, 0)); -+ cedrus_write(dev, VE_H264_VLD_ADDR, -+ VE_H264_VLD_ADDR_VAL(src_buf_addr) | -+ VE_H264_VLD_ADDR_FIRST | VE_H264_VLD_ADDR_VALID | -+ VE_H264_VLD_ADDR_LAST); -+ -+ cedrus_write(dev, VE_H264_TRIGGER_TYPE, -+ VE_H264_TRIGGER_TYPE_INIT_SWDEC); -+ -+ cedrus_write(dev, VE_VP8_ENTROPY_PROBS_ADDR, -+ ctx->codec.vp8.entropy_probs_buf_dma); -+ -+ reg = 0; -+ switch (slice->version) { -+ case 1: -+ reg |= VE_VP8_PPS_FILTER_TYPE_SIMPLE; -+ reg |= VE_VP8_PPS_BILINEAR_MC_FILTER; -+ break; -+ case 2: -+ reg |= VE_VP8_PPS_LPF_DISABLE; -+ reg |= VE_VP8_PPS_BILINEAR_MC_FILTER; -+ break; -+ case 3: -+ reg |= VE_VP8_PPS_LPF_DISABLE; -+ reg |= VE_VP8_PPS_FULL_PIXEL; -+ break; -+ } -+ if (slice->segment_header.flags & V4L2_VP8_SEGMENT_HEADER_FLAG_UPDATE_MAP) -+ reg |= VE_VP8_PPS_UPDATE_MB_SEGMENTATION_MAP; -+ if (!(slice->segment_header.flags & V4L2_VP8_SEGMENT_HEADER_FLAG_DELTA_VALUE_MODE)) -+ reg |= VE_VP8_PPS_MB_SEGMENT_ABS_DELTA; -+ if (slice->segment_header.flags & V4L2_VP8_SEGMENT_HEADER_FLAG_ENABLED) -+ reg |= VE_VP8_PPS_SEGMENTATION_ENABLE; -+ if (ctx->codec.vp8.last_filter_type) -+ reg |= VE_VP8_PPS_LAST_LOOP_FILTER_SIMPLE; -+ reg |= VE_VP8_PPS_SHARPNESS_LEVEL(slice->lf_header.sharpness_level); -+ if (slice->lf_header.flags & V4L2_VP8_LF_FILTER_TYPE_SIMPLE) -+ reg |= VE_VP8_PPS_LOOP_FILTER_SIMPLE; -+ reg |= VE_VP8_PPS_LOOP_FILTER_LEVEL(slice->lf_header.level); -+ if (slice->lf_header.flags & V4L2_VP8_LF_HEADER_ADJ_ENABLE) -+ reg |= VE_VP8_PPS_MODE_REF_LF_DELTA_ENABLE; -+ if (slice->lf_header.flags & V4L2_VP8_LF_HEADER_DELTA_UPDATE) -+ reg |= VE_VP8_PPS_MODE_REF_LF_DELTA_UPDATE; -+ reg |= VE_VP8_PPS_TOKEN_PARTITION(ilog2(slice->num_dct_parts)); -+ if (slice->flags & V4L2_VP8_FRAME_HEADER_FLAG_MB_NO_SKIP_COEFF) -+ reg |= VE_VP8_PPS_MB_NO_COEFF_SKIP; -+ reg |= VE_VP8_PPS_RELOAD_ENTROPY_PROBS; -+ if (slice->flags & V4L2_VP8_FRAME_HEADER_FLAG_SIGN_BIAS_GOLDEN) -+ reg |= VE_VP8_PPS_GOLDEN_SIGN_BIAS; -+ if (slice->flags & V4L2_VP8_FRAME_HEADER_FLAG_SIGN_BIAS_ALT) -+ reg |= VE_VP8_PPS_ALTREF_SIGN_BIAS; -+ if (ctx->codec.vp8.last_frame_p_type) -+ reg |= VE_VP8_PPS_LAST_PIC_TYPE_P_FRAME; -+ reg |= VE_VP8_PPS_LAST_SHARPNESS_LEVEL(ctx->codec.vp8.last_sharpness_level); -+ if (!(slice->flags & V4L2_VP8_FRAME_HEADER_FLAG_KEY_FRAME)) -+ reg |= VE_VP8_PPS_PIC_TYPE_P_FRAME; -+ cedrus_write(dev, VE_VP8_PPS, reg); -+ -+ cedrus_read_header(dev, slice); -+ -+ /* reset registers changed by HW */ -+ cedrus_write(dev, VE_H264_CUR_MB_NUM, 0); -+ cedrus_write(dev, VE_H264_MB_ADDR, 0); -+ cedrus_write(dev, VE_H264_ERROR_CASE, 0); -+ -+ reg = 0; -+ reg |= VE_VP8_QP_INDEX_DELTA_UVAC(slice->quant_header.uv_ac_delta); -+ reg |= VE_VP8_QP_INDEX_DELTA_UVDC(slice->quant_header.uv_dc_delta); -+ reg |= VE_VP8_QP_INDEX_DELTA_Y2AC(slice->quant_header.y2_ac_delta); -+ reg |= VE_VP8_QP_INDEX_DELTA_Y2DC(slice->quant_header.y2_dc_delta); -+ reg |= VE_VP8_QP_INDEX_DELTA_Y1DC(slice->quant_header.y_dc_delta); -+ reg |= VE_VP8_QP_INDEX_DELTA_BASE_QINDEX(slice->quant_header.y_ac_qi); -+ cedrus_write(dev, VE_VP8_QP_INDEX_DELTA, reg); -+ -+ reg = 0; -+ reg |= VE_VP8_FSIZE_WIDTH(slice->width); -+ reg |= VE_VP8_FSIZE_HEIGHT(slice->height); -+ cedrus_write(dev, VE_VP8_FSIZE, reg); -+ -+ reg = 0; -+ reg |= VE_VP8_PICSIZE_WIDTH(slice->width); -+ reg |= VE_VP8_PICSIZE_HEIGHT(slice->height); -+ cedrus_write(dev, VE_VP8_PICSIZE, reg); -+ -+ reg = 0; -+ reg |= VE_VP8_SEGMENT3(slice->segment_header.quant_update[3]); -+ reg |= VE_VP8_SEGMENT2(slice->segment_header.quant_update[2]); -+ reg |= VE_VP8_SEGMENT1(slice->segment_header.quant_update[1]); -+ reg |= VE_VP8_SEGMENT0(slice->segment_header.quant_update[0]); -+ cedrus_write(dev, VE_VP8_SEGMENT_FEAT_MB_LV0, reg); -+ -+ reg = 0; -+ reg |= VE_VP8_SEGMENT3(slice->segment_header.lf_update[3]); -+ reg |= VE_VP8_SEGMENT2(slice->segment_header.lf_update[2]); -+ reg |= VE_VP8_SEGMENT1(slice->segment_header.lf_update[1]); -+ reg |= VE_VP8_SEGMENT0(slice->segment_header.lf_update[0]); -+ cedrus_write(dev, VE_VP8_SEGMENT_FEAT_MB_LV1, reg); -+ -+ reg = 0; -+ reg |= VE_VP8_LF_DELTA3(slice->lf_header.ref_frm_delta[3]); -+ reg |= VE_VP8_LF_DELTA2(slice->lf_header.ref_frm_delta[2]); -+ reg |= VE_VP8_LF_DELTA1(slice->lf_header.ref_frm_delta[1]); -+ reg |= VE_VP8_LF_DELTA0(slice->lf_header.ref_frm_delta[0]); -+ cedrus_write(dev, VE_VP8_REF_LF_DELTA, reg); -+ -+ reg = 0; -+ reg |= VE_VP8_LF_DELTA3(slice->lf_header.mb_mode_delta[3]); -+ reg |= VE_VP8_LF_DELTA2(slice->lf_header.mb_mode_delta[2]); -+ reg |= VE_VP8_LF_DELTA1(slice->lf_header.mb_mode_delta[1]); -+ reg |= VE_VP8_LF_DELTA0(slice->lf_header.mb_mode_delta[0]); -+ cedrus_write(dev, VE_VP8_MODE_LF_DELTA, reg); -+ -+ luma_addr = cedrus_dst_buf_addr(ctx, run->dst->vb2_buf.index, 0); -+ chroma_addr = cedrus_dst_buf_addr(ctx, run->dst->vb2_buf.index, 1); -+ cedrus_write(dev, VE_VP8_REC_LUMA, luma_addr); -+ cedrus_write(dev, VE_VP8_REC_CHROMA, chroma_addr); -+ -+ qindex = vb2_find_timestamp(cap_q, slice->last_frame_ts, 0); -+ if (qindex >= 0) { -+ luma_addr = cedrus_dst_buf_addr(ctx, qindex, 0); -+ chroma_addr = cedrus_dst_buf_addr(ctx, qindex, 1); -+ cedrus_write(dev, VE_VP8_FWD_LUMA, luma_addr); -+ cedrus_write(dev, VE_VP8_FWD_CHROMA, chroma_addr); -+ } else { -+ cedrus_write(dev, VE_VP8_FWD_LUMA, 0); -+ cedrus_write(dev, VE_VP8_FWD_CHROMA, 0); -+ } -+ -+ qindex = vb2_find_timestamp(cap_q, slice->golden_frame_ts, 0); -+ if (qindex >= 0) { -+ luma_addr = cedrus_dst_buf_addr(ctx, qindex, 0); -+ chroma_addr = cedrus_dst_buf_addr(ctx, qindex, 1); -+ cedrus_write(dev, VE_VP8_BWD_LUMA, luma_addr); -+ cedrus_write(dev, VE_VP8_BWD_CHROMA, chroma_addr); -+ } else { -+ cedrus_write(dev, VE_VP8_BWD_LUMA, 0); -+ cedrus_write(dev, VE_VP8_BWD_CHROMA, 0); -+ } -+ -+ qindex = vb2_find_timestamp(cap_q, slice->alt_frame_ts, 0); -+ if (qindex >= 0) { -+ luma_addr = cedrus_dst_buf_addr(ctx, qindex, 0); -+ chroma_addr = cedrus_dst_buf_addr(ctx, qindex, 1); -+ cedrus_write(dev, VE_VP8_ALT_LUMA, luma_addr); -+ cedrus_write(dev, VE_VP8_ALT_CHROMA, chroma_addr); -+ } else { -+ cedrus_write(dev, VE_VP8_ALT_LUMA, 0); -+ cedrus_write(dev, VE_VP8_ALT_CHROMA, 0); -+ } -+ -+ cedrus_write(dev, VE_H264_CTRL, VE_H264_CTRL_VP8 | -+ VE_H264_CTRL_DECODE_ERR_INT | -+ VE_H264_CTRL_SLICE_DECODE_INT); -+ -+ if (slice->lf_header.level) { -+ ctx->codec.vp8.last_filter_type = -+ !!(slice->lf_header.flags & V4L2_VP8_LF_FILTER_TYPE_SIMPLE); -+ ctx->codec.vp8.last_frame_p_type = -+ !VP8_FRAME_IS_KEY_FRAME(slice); -+ ctx->codec.vp8.last_sharpness_level = -+ slice->lf_header.sharpness_level; -+ } -+} -+ -+static int cedrus_vp8_start(struct cedrus_ctx *ctx) -+{ -+ struct cedrus_dev *dev = ctx->dev; -+ -+ ctx->codec.vp8.entropy_probs_buf = -+ dma_alloc_coherent(dev->dev, CEDRUS_ENTROPY_PROBS_SIZE, -+ &ctx->codec.vp8.entropy_probs_buf_dma, -+ GFP_KERNEL); -+ if (!ctx->codec.vp8.entropy_probs_buf) -+ return -ENOMEM; -+ -+ memcpy(&ctx->codec.vp8.entropy_probs_buf[2048], -+ prob_table_init, sizeof(prob_table_init)); -+ -+ return 0; -+} -+ -+static void cedrus_vp8_stop(struct cedrus_ctx *ctx) -+{ -+ struct cedrus_dev *dev = ctx->dev; -+ -+ cedrus_engine_disable(dev); -+ -+ dma_free_coherent(dev->dev, CEDRUS_ENTROPY_PROBS_SIZE, -+ ctx->codec.vp8.entropy_probs_buf, -+ ctx->codec.vp8.entropy_probs_buf_dma); -+} -+ -+static void cedrus_vp8_trigger(struct cedrus_ctx *ctx) -+{ -+ struct cedrus_dev *dev = ctx->dev; -+ -+ cedrus_write(dev, VE_H264_TRIGGER_TYPE, -+ VE_H264_TRIGGER_TYPE_VP8_SLICE_DECODE); -+} -+ -+struct cedrus_dec_ops cedrus_dec_ops_vp8 = { -+ .irq_clear = cedrus_vp8_irq_clear, -+ .irq_disable = cedrus_vp8_irq_disable, -+ .irq_status = cedrus_vp8_irq_status, -+ .setup = cedrus_vp8_setup, -+ .start = cedrus_vp8_start, -+ .stop = cedrus_vp8_stop, -+ .trigger = cedrus_vp8_trigger, -+}; diff --git a/projects/Allwinner/patches/linux/0044-HACK-h3-h5-Add-HDMI-sound-card.patch b/projects/Allwinner/patches/linux/0034-HACK-h3-h5-Add-HDMI-sound-card.patch similarity index 96% rename from projects/Allwinner/patches/linux/0044-HACK-h3-h5-Add-HDMI-sound-card.patch rename to projects/Allwinner/patches/linux/0034-HACK-h3-h5-Add-HDMI-sound-card.patch index 8f44848145..98377f709e 100644 --- a/projects/Allwinner/patches/linux/0044-HACK-h3-h5-Add-HDMI-sound-card.patch +++ b/projects/Allwinner/patches/linux/0034-HACK-h3-h5-Add-HDMI-sound-card.patch @@ -35,7 +35,7 @@ Signed-off-by: Jernej Skrabec clocks { #address-cells = <1>; #size-cells = <1>; -@@ -672,7 +690,6 @@ +@@ -681,7 +699,6 @@ dmas = <&dma 27>; resets = <&ccu RST_BUS_I2S2>; dma-names = "tx"; @@ -43,7 +43,7 @@ Signed-off-by: Jernej Skrabec }; codec: codec@1c22c00 { -@@ -806,6 +823,7 @@ +@@ -815,6 +832,7 @@ }; hdmi: hdmi@1ee0000 { diff --git a/projects/Allwinner/patches/linux/0045-h3-h5-power-key-wake-up-source.patch b/projects/Allwinner/patches/linux/0035-h3-h5-power-key-wake-up-source.patch similarity index 55% rename from projects/Allwinner/patches/linux/0045-h3-h5-power-key-wake-up-source.patch rename to projects/Allwinner/patches/linux/0035-h3-h5-power-key-wake-up-source.patch index 60a2ef447d..b0a8136ca4 100644 --- a/projects/Allwinner/patches/linux/0045-h3-h5-power-key-wake-up-source.patch +++ b/projects/Allwinner/patches/linux/0035-h3-h5-power-key-wake-up-source.patch @@ -4,7 +4,6 @@ Date: Sat, 30 Jan 2021 18:12:26 +0100 Subject: [PATCH] h3/h5: power key wake up source --- - arch/arm/boot/dts/sun8i-h3-beelink-x2.dts | 11 +++++++++++ arch/arm/boot/dts/sun8i-h3-nanopi.dtsi | 1 + arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 3 ++- arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts | 3 ++- @@ -12,33 +11,9 @@ Subject: [PATCH] h3/h5: power key wake up source arch/arm/boot/dts/sunxi-libretech-all-h3-cc.dtsi | 1 + 6 files changed, 19 insertions(+), 3 deletions(-) -diff --git a/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts b/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts -index 45a24441ff18..24aff65f82ca 100644 ---- a/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts -+++ b/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts -@@ -111,6 +111,17 @@ spdif_out: spdif-out { - #sound-dai-cells = <0>; - compatible = "linux,spdif-dit"; - }; -+ -+ r_gpio_keys { -+ compatible = "gpio-keys"; -+ -+ power { -+ label = "power"; -+ linux,code = ; -+ gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; -+ wakeup-source; -+ }; -+ }; - }; - - &de { -diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi b/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi -index 4df29a65316d..684a0a1f8886 100644 --- a/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi +++ b/arch/arm/boot/dts/sun8i-h3-nanopi.dtsi -@@ -81,6 +81,7 @@ k1 { +@@ -81,6 +81,7 @@ label = "k1"; linux,code = ; gpios = <&r_pio 0 3 GPIO_ACTIVE_LOW>; @@ -46,11 +21,9 @@ index 4df29a65316d..684a0a1f8886 100644 }; }; }; -diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts -index 597c425d08ec..9daffd90c12f 100644 --- a/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts +++ b/arch/arm/boot/dts/sun8i-h3-orangepi-2.dts -@@ -99,8 +99,9 @@ sw2 { +@@ -99,8 +99,9 @@ sw4 { label = "sw4"; @@ -61,11 +34,9 @@ index 597c425d08ec..9daffd90c12f 100644 }; }; -diff --git a/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts b/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts -index 5aff8ecc66cb..90f75fa85e68 100644 --- a/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts +++ b/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts -@@ -91,8 +91,9 @@ r_gpio_keys { +@@ -91,8 +91,9 @@ sw4 { label = "sw4"; @@ -76,11 +47,9 @@ index 5aff8ecc66cb..90f75fa85e68 100644 }; }; }; -diff --git a/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi -index 8e5cb3b3fd68..b1066dedc1a2 100644 --- a/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi +++ b/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi -@@ -82,8 +82,9 @@ gpio_keys { +@@ -82,8 +82,9 @@ sw4 { label = "power"; @@ -91,11 +60,9 @@ index 8e5cb3b3fd68..b1066dedc1a2 100644 }; }; -diff --git a/arch/arm/boot/dts/sunxi-libretech-all-h3-cc.dtsi b/arch/arm/boot/dts/sunxi-libretech-all-h3-cc.dtsi -index c44fd726945a..9e14fe5fdcde 100644 --- a/arch/arm/boot/dts/sunxi-libretech-all-h3-cc.dtsi +++ b/arch/arm/boot/dts/sunxi-libretech-all-h3-cc.dtsi -@@ -49,6 +49,7 @@ power { +@@ -49,6 +49,7 @@ label = "power"; linux,code = ; gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ diff --git a/projects/Allwinner/patches/linux/0055-wip-h3-h5-cvbs.patch b/projects/Allwinner/patches/linux/0036-wip-h3-h5-cvbs.patch similarity index 84% rename from projects/Allwinner/patches/linux/0055-wip-h3-h5-cvbs.patch rename to projects/Allwinner/patches/linux/0036-wip-h3-h5-cvbs.patch index 1f036803eb..5f3f69b491 100644 --- a/projects/Allwinner/patches/linux/0055-wip-h3-h5-cvbs.patch +++ b/projects/Allwinner/patches/linux/0036-wip-h3-h5-cvbs.patch @@ -11,27 +11,25 @@ Subject: [PATCH] wip h3/h5 cvbs drivers/gpu/drm/sun4i/sun8i_mixer.h | 5 +- 6 files changed, 169 insertions(+), 9 deletions(-) -diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -index 22d533d18992..f18959b2e8df 100644 --- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi +++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -@@ -101,7 +101,7 @@ osc32k: osc32k_clk { - +@@ -119,7 +119,7 @@ + de: display-engine { compatible = "allwinner,sun8i-h3-display-engine"; - allwinner,pipelines = <&mixer0>; + allwinner,pipelines = <&mixer0>, <&mixer1>; status = "disabled"; }; - -@@ -138,11 +138,50 @@ ports { + +@@ -163,11 +163,50 @@ #size-cells = <0>; - + mixer0_out: port@1 { + #address-cells = <1>; + #size-cells = <0>; reg = <1>; - + - mixer0_out_tcon0: endpoint { + mixer0_out_tcon0: endpoint@0 { + reg = <0>; @@ -76,14 +74,14 @@ index 22d533d18992..f18959b2e8df 100644 }; }; }; -@@ -171,11 +210,19 @@ ports { +@@ -196,11 +235,19 @@ #size-cells = <0>; - + tcon0_in: port@0 { + #address-cells = <1>; + #size-cells = <0>; reg = <0>; - + - tcon0_in_mixer0: endpoint { + tcon0_in_mixer0: endpoint@0 { + reg = <0>; @@ -95,12 +93,12 @@ index 22d533d18992..f18959b2e8df 100644 + remote-endpoint = <&mixer1_out_tcon0>; + }; }; - + tcon0_out: port@1 { -@@ -191,6 +238,49 @@ tcon0_out_hdmi: endpoint@1 { +@@ -216,6 +263,49 @@ }; }; - + + tcon1: lcd-controller@1c0d000 { + compatible = "allwinner,sun8i-h3-tcon-tv", + "allwinner,sun8i-a83t-tcon-tv"; @@ -147,10 +145,10 @@ index 22d533d18992..f18959b2e8df 100644 mmc0: mmc@1c0f000 { /* compatible and clocks are in per SoC .dtsi file */ reg = <0x01c0f000 0x1000>; -@@ -792,6 +882,21 @@ csi: camera@1cb0000 { +@@ -831,6 +921,21 @@ status = "disabled"; }; - + + tve: tv-encoder@1e00000 { + compatible = "allwinner,sun8i-h3-tv-encoder", + "allwinner,sun4i-a10-tv-encoder"; @@ -167,15 +165,13 @@ index 22d533d18992..f18959b2e8df 100644 + }; + hdmi: hdmi@1ee0000 { + #sound-dai-cells = <0>; compatible = "allwinner,sun8i-h3-dw-hdmi", - "allwinner,sun8i-a83t-dw-hdmi"; -diff --git a/drivers/clk/sunxi-ng/ccu-sun8i-h3.c b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c -index 7e629a4493af..334b7edea3b7 100644 --- a/drivers/clk/sunxi-ng/ccu-sun8i-h3.c +++ b/drivers/clk/sunxi-ng/ccu-sun8i-h3.c -@@ -456,8 +456,18 @@ static SUNXI_CCU_M_WITH_MUX_GATE(tcon_clk, "tcon", tcon_parents, +@@ -456,8 +456,18 @@ static SUNXI_CCU_M_WITH_MUX_GATE(tcon_cl CLK_SET_RATE_PARENT); - + static const char * const tve_parents[] = { "pll-de", "pll-periph1" }; -static SUNXI_CCU_M_WITH_MUX_GATE(tve_clk, "tve", tve_parents, - 0x120, 0, 4, 24, 3, BIT(31), 0); @@ -191,30 +187,26 @@ index 7e629a4493af..334b7edea3b7 100644 + &ccu_div_ops, 0), + }, +}; - + static const char * const deinterlace_parents[] = { "pll-periph0", "pll-periph1" }; static SUNXI_CCU_M_WITH_MUX_GATE(deinterlace_clk, "deinterlace", deinterlace_parents, -diff --git a/drivers/gpu/drm/sun4i/Makefile b/drivers/gpu/drm/sun4i/Makefile -index 0d04f2447b01..7b151994e904 100644 --- a/drivers/gpu/drm/sun4i/Makefile +++ b/drivers/gpu/drm/sun4i/Makefile -@@ -16,7 +16,7 @@ sun8i-drm-hdmi-y += sun8i_hdmi_phy_clk.o - +@@ -16,7 +16,7 @@ sun8i-drm-hdmi-y += sun8i_hdmi_phy_clk. + sun8i-mixer-y += sun8i_mixer.o sun8i_ui_layer.o \ sun8i_vi_layer.o sun8i_ui_scaler.o \ - sun8i_vi_scaler.o sun8i_csc.o + sun8i_vi_scaler.o sun8i_csc.o sun4i_tv.o - + sun4i-tcon-y += sun4i_crtc.o sun4i-tcon-y += sun4i_dotclock.o -diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c -index 5b42cf25cc86..35ca78a30087 100644 --- a/drivers/gpu/drm/sun4i/sun8i_mixer.c +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c @@ -32,6 +32,12 @@ struct de2_fmt_info { u32 de2_fmt; }; - + +static const u32 sun8i_rgb2yuv_coef[12] = { + 0x00000107, 0x00000204, 0x00000064, 0x00004200, + 0x00001f68, 0x00001ed6, 0x000001c2, 0x00020200, @@ -224,10 +216,10 @@ index 5b42cf25cc86..35ca78a30087 100644 static const struct de2_fmt_info de2_formats[] = { { .drm_fmt = DRM_FORMAT_ARGB8888, -@@ -298,9 +304,28 @@ static struct drm_plane **sun8i_layers_init(struct drm_device *drm, +@@ -341,9 +347,28 @@ static struct drm_plane **sun8i_layers_i return planes; } - + +static void sun8i_mixer_apply_color_correction(struct sunxi_engine *engine) +{ + DRM_DEBUG_DRIVER("Applying RGB to YUV color correction\n"); @@ -253,12 +245,12 @@ index 5b42cf25cc86..35ca78a30087 100644 + .apply_color_correction = sun8i_mixer_apply_color_correction, + .disable_color_correction = sun8i_mixer_disable_color_correction, }; - - static const struct regmap_config sun8i_mixer_regmap_config = { -@@ -560,6 +585,15 @@ static const struct sun8i_mixer_cfg sun8i_h3_mixer0_cfg = { + + static bool sun8i_mixer_volatile_reg(struct device *dev, unsigned int reg) +@@ -608,6 +633,15 @@ static const struct sun8i_mixer_cfg sun8 .vi_num = 1, }; - + +static const struct sun8i_mixer_cfg sun8i_h3_mixer1_cfg = { + .ccsc = 1, + .mod_rate = 432000000, @@ -271,25 +263,23 @@ index 5b42cf25cc86..35ca78a30087 100644 static const struct sun8i_mixer_cfg sun8i_r40_mixer0_cfg = { .ccsc = 0, .mod_rate = 297000000, -@@ -628,6 +662,10 @@ static const struct of_device_id sun8i_mixer_of_table[] = { - .compatible = "allwinner,sun8i-h3-de2-mixer-0", +@@ -677,6 +711,10 @@ static const struct of_device_id sun8i_m .data = &sun8i_h3_mixer0_cfg, }, -+ { + { + .compatible = "allwinner,sun8i-h3-de2-mixer-1", + .data = &sun8i_h3_mixer1_cfg, + }, - { ++ { .compatible = "allwinner,sun8i-r40-de2-mixer-0", .data = &sun8i_r40_mixer0_cfg, -diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.h b/drivers/gpu/drm/sun4i/sun8i_mixer.h -index 7576b523fdbb..6593085cecf3 100644 + }, --- a/drivers/gpu/drm/sun4i/sun8i_mixer.h +++ b/drivers/gpu/drm/sun4i/sun8i_mixer.h @@ -120,6 +120,10 @@ /* format 20 is packed YVU444 10-bit */ /* format 21 is packed YUV444 10-bit */ - + +/* The DCSC sub-engine is used to do color space conversation */ +#define SUN8I_MIXER_DCSC_EN 0xb0000 +#define SUN8I_MIXER_DCSC_COEF_REG(x) (0xb0010 + 0x4 * (x)) @@ -302,6 +292,6 @@ index 7576b523fdbb..6593085cecf3 100644 #define SUN8I_MIXER_ASE_EN 0xa8000 #define SUN8I_MIXER_FCC_EN 0xaa000 -#define SUN8I_MIXER_DCSC_EN 0xb0000 - + #define SUN50I_MIXER_FCE_EN 0x70000 #define SUN50I_MIXER_PEAK_EN 0x70800 diff --git a/projects/Allwinner/patches/linux/0059-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch b/projects/Allwinner/patches/linux/0038-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch similarity index 95% rename from projects/Allwinner/patches/linux/0059-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch rename to projects/Allwinner/patches/linux/0038-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch index 63d1a7d76e..bbd2c4622b 100644 --- a/projects/Allwinner/patches/linux/0059-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch +++ b/projects/Allwinner/patches/linux/0038-WIP-media-uapi-hevc-add-fields-needed-for-rkvdec.patch @@ -10,8 +10,6 @@ Signed-off-by: Jonas Karlman include/media/hevc-ctrls.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) -diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h -index 6e881b7896bc..46936bae7c30 100644 --- a/include/media/hevc-ctrls.h +++ b/include/media/hevc-ctrls.h @@ -56,6 +56,9 @@ enum v4l2_mpeg_video_hevc_start_code { diff --git a/projects/Allwinner/patches/linux/0060-HACK-media-uapi-hevc-tiles-and-num_slices.patch b/projects/Allwinner/patches/linux/0039-HACK-media-uapi-hevc-tiles-and-num_slices.patch similarity index 91% rename from projects/Allwinner/patches/linux/0060-HACK-media-uapi-hevc-tiles-and-num_slices.patch rename to projects/Allwinner/patches/linux/0039-HACK-media-uapi-hevc-tiles-and-num_slices.patch index e24549b10c..7d1ceebd6a 100644 --- a/projects/Allwinner/patches/linux/0060-HACK-media-uapi-hevc-tiles-and-num_slices.patch +++ b/projects/Allwinner/patches/linux/0039-HACK-media-uapi-hevc-tiles-and-num_slices.patch @@ -7,8 +7,6 @@ Subject: [PATCH] HACK: media: uapi: hevc: tiles and num_slices include/media/hevc-ctrls.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) -diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h -index 46936bae7c30..4d51c148d0ba 100644 --- a/include/media/hevc-ctrls.h +++ b/include/media/hevc-ctrls.h @@ -80,7 +80,8 @@ struct v4l2_ctrl_hevc_sps { diff --git a/projects/Allwinner/patches/linux/0046-drm-lima-add-governor-data-with-pre-defined-thresholds.patch b/projects/Allwinner/patches/linux/0046-drm-lima-add-governor-data-with-pre-defined-thresholds.patch deleted file mode 100644 index c74efcec2c..0000000000 --- a/projects/Allwinner/patches/linux/0046-drm-lima-add-governor-data-with-pre-defined-thresholds.patch +++ /dev/null @@ -1,57 +0,0 @@ -From: Christian Hewitt -Subject: [PATCH v2] drm/lima: add governor data with pre-defined thresholds -Date: Wed, 27 Jan 2021 19:40:47 +0000 - -This patch adapts the panfrost pre-defined thresholds change [0] to the -lima driver to improve real-world performance. The upthreshold value has -been set to ramp GPU frequency to max freq faster (compared to panfrost) -to compensate for the lower overall performance of utgard devices. - -[0] https://patchwork.kernel.org/project/dri-devel/patch/20210121170445.19761-1-lukasz.luba@arm.com/ - -Signed-off-by: Christian Hewitt -Reviewed-by: Lukasz Luba -Reviewed-by: Qiang Yu ---- - drivers/gpu/drm/lima/lima_devfreq.c | 10 +++++++++- - drivers/gpu/drm/lima/lima_devfreq.h | 2 ++ - 2 files changed, 11 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/lima/lima_devfreq.c -+++ b/drivers/gpu/drm/lima/lima_devfreq.c -@@ -177,8 +177,16 @@ int lima_devfreq_init(struct lima_device - lima_devfreq_profile.initial_freq = cur_freq; - dev_pm_opp_put(opp); - -+ /* -+ * Setup default thresholds for the simple_ondemand governor. -+ * The values are chosen based on experiments. -+ */ -+ ldevfreq->gov_data.upthreshold = 30; -+ ldevfreq->gov_data.downdifferential = 5; -+ - devfreq = devm_devfreq_add_device(dev, &lima_devfreq_profile, -- DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL); -+ DEVFREQ_GOV_SIMPLE_ONDEMAND, -+ &ldevfreq->gov_data); - if (IS_ERR(devfreq)) { - dev_err(dev, "Couldn't initialize GPU devfreq\n"); - ret = PTR_ERR(devfreq); ---- a/drivers/gpu/drm/lima/lima_devfreq.h -+++ b/drivers/gpu/drm/lima/lima_devfreq.h -@@ -4,6 +4,7 @@ - #ifndef __LIMA_DEVFREQ_H__ - #define __LIMA_DEVFREQ_H__ - -+#include - #include - #include - -@@ -18,6 +19,7 @@ struct lima_devfreq { - struct opp_table *clkname_opp_table; - struct opp_table *regulators_opp_table; - struct thermal_cooling_device *cooling; -+ struct devfreq_simple_ondemand_data gov_data; - bool opp_of_table_added; - - ktime_t busy_time; diff --git a/projects/Allwinner/patches/linux/0047-drm-lima-Use-delayed-timer-as-default-in-devfreq-profile.patch b/projects/Allwinner/patches/linux/0047-drm-lima-Use-delayed-timer-as-default-in-devfreq-profile.patch deleted file mode 100644 index b6b0ff045d..0000000000 --- a/projects/Allwinner/patches/linux/0047-drm-lima-Use-delayed-timer-as-default-in-devfreq-profile.patch +++ /dev/null @@ -1,24 +0,0 @@ -From: Lukasz Luba -Subject: [PATCH] drm/lima: Use delayed timer as default in devfreq profile -Date: Wed, 27 Jan 2021 10:51:21 +0000 - -Devfreq framework supports 2 modes for monitoring devices. -Use delayed timer as default instead of deferrable timer -in order to monitor the GPU status regardless of CPU idle. - -Signed-off-by: Lukasz Luba -Reviewed-by: Qiang Yu ---- - drivers/gpu/drm/lima/lima_devfreq.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/drivers/gpu/drm/lima/lima_devfreq.c -+++ b/drivers/gpu/drm/lima/lima_devfreq.c -@@ -86,6 +86,7 @@ static int lima_devfreq_get_dev_status(s - } - - static struct devfreq_dev_profile lima_devfreq_profile = { -+ .timer = DEVFREQ_TIMER_DELAYED, - .polling_ms = 50, /* ~3 frames */ - .target = lima_devfreq_target, - .get_dev_status = lima_devfreq_get_dev_status, diff --git a/projects/Allwinner/patches/linux/0048-drm-panfrost-Add-governor-data-with-pre-defined-thre.patch b/projects/Allwinner/patches/linux/0048-drm-panfrost-Add-governor-data-with-pre-defined-thre.patch deleted file mode 100644 index 38775afa97..0000000000 --- a/projects/Allwinner/patches/linux/0048-drm-panfrost-Add-governor-data-with-pre-defined-thre.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Lukasz Luba -Date: Thu, 21 Jan 2021 17:04:45 +0000 -Subject: [PATCH] drm/panfrost: Add governor data with pre-defined thresholds - -The simple_ondemand devfreq governor uses two thresholds to decide about -the frequency change: upthreshold, downdifferential. These two tunable -change the behavior of the governor decision, e.g. how fast to increase -the frequency or how rapidly limit the frequency. This patch adds needed -governor data with thresholds values gathered experimentally in different -workloads. - -Signed-off-by: Lukasz Luba -Reviewed-by: Steven Price -Signed-off-by: Steven Price -Link: https://patchwork.freedesktop.org/patch/msgid/20210121170445.19761-1-lukasz.luba@arm.com ---- - drivers/gpu/drm/panfrost/panfrost_devfreq.c | 10 +++++++++- - drivers/gpu/drm/panfrost/panfrost_devfreq.h | 2 ++ - 2 files changed, 11 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c -+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c -@@ -134,8 +134,16 @@ int panfrost_devfreq_init(struct panfros - panfrost_devfreq_profile.initial_freq = cur_freq; - dev_pm_opp_put(opp); - -+ /* -+ * Setup default thresholds for the simple_ondemand governor. -+ * The values are chosen based on experiments. -+ */ -+ pfdevfreq->gov_data.upthreshold = 45; -+ pfdevfreq->gov_data.downdifferential = 5; -+ - devfreq = devm_devfreq_add_device(dev, &panfrost_devfreq_profile, -- DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL); -+ DEVFREQ_GOV_SIMPLE_ONDEMAND, -+ &pfdevfreq->gov_data); - if (IS_ERR(devfreq)) { - DRM_DEV_ERROR(dev, "Couldn't initialize GPU devfreq\n"); - ret = PTR_ERR(devfreq); ---- a/drivers/gpu/drm/panfrost/panfrost_devfreq.h -+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.h -@@ -4,6 +4,7 @@ - #ifndef __PANFROST_DEVFREQ_H__ - #define __PANFROST_DEVFREQ_H__ - -+#include - #include - #include - -@@ -17,6 +18,7 @@ struct panfrost_devfreq { - struct devfreq *devfreq; - struct opp_table *regulators_opp_table; - struct thermal_cooling_device *cooling; -+ struct devfreq_simple_ondemand_data gov_data; - bool opp_of_table_added; - - ktime_t busy_time; diff --git a/projects/Allwinner/patches/linux/0049-drm-panfrost-Use-delayed-timer-as-default-in-devfreq.patch b/projects/Allwinner/patches/linux/0049-drm-panfrost-Use-delayed-timer-as-default-in-devfreq.patch deleted file mode 100644 index ad17f86f78..0000000000 --- a/projects/Allwinner/patches/linux/0049-drm-panfrost-Use-delayed-timer-as-default-in-devfreq.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Lukasz Luba -Date: Tue, 5 Jan 2021 16:41:11 +0000 -Subject: [PATCH] drm/panfrost: Use delayed timer as default in devfreq profile - -Devfreq framework supports 2 modes for monitoring devices. -Use delayed timer as default instead of deferrable timer -in order to monitor the GPU status regardless of CPU idle. - -Signed-off-by: Lukasz Luba -Reviewed-by: Steven Price -Signed-off-by: Steven Price -Link: https://patchwork.freedesktop.org/patch/msgid/20210105164111.30122-1-lukasz.luba@arm.com ---- - drivers/gpu/drm/panfrost/panfrost_devfreq.c | 1 + - 1 file changed, 1 insertion(+) - ---- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c -+++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c -@@ -81,6 +81,7 @@ static int panfrost_devfreq_get_dev_stat - } - - static struct devfreq_dev_profile panfrost_devfreq_profile = { -+ .timer = DEVFREQ_TIMER_DELAYED, - .polling_ms = 50, /* ~3 frames */ - .target = panfrost_devfreq_target, - .get_dev_status = panfrost_devfreq_get_dev_status, diff --git a/projects/Allwinner/patches/linux/crust/0006-net-stmmac-dwmac-sun8i-Return-void-from-PHY-unpower.patch b/projects/Allwinner/patches/linux/crust/0006-net-stmmac-dwmac-sun8i-Return-void-from-PHY-unpower.patch deleted file mode 100644 index 0a25b6722d..0000000000 --- a/projects/Allwinner/patches/linux/crust/0006-net-stmmac-dwmac-sun8i-Return-void-from-PHY-unpower.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 3 Jan 2021 05:25:38 -0600 -Subject: [PATCH] net: stmmac: dwmac-sun8i: Return void from PHY unpower - -This is a deinitialization function that always returned zero, and that -return value was always ignored. Have it return void instead. - -Signed-off-by: Samuel Holland -Reviewed-by: Chen-Yu Tsai ---- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 5 ++--- - 1 file changed, 2 insertions(+), 3 deletions(-) - ---- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -820,15 +820,14 @@ static int sun8i_dwmac_power_internal_ph - return 0; - } - --static int sun8i_dwmac_unpower_internal_phy(struct sunxi_priv_data *gmac) -+static void sun8i_dwmac_unpower_internal_phy(struct sunxi_priv_data *gmac) - { - if (!gmac->internal_phy_powered) -- return 0; -+ return; - - clk_disable_unprepare(gmac->ephy_clk); - reset_control_assert(gmac->rst_ephy); - gmac->internal_phy_powered = false; -- return 0; - } - - /* MDIO multiplexing switch function diff --git a/projects/Allwinner/patches/linux/crust/0007-net-stmmac-dwmac-sun8i-Remove-unnecessary-PHY-power-.patch b/projects/Allwinner/patches/linux/crust/0007-net-stmmac-dwmac-sun8i-Remove-unnecessary-PHY-power-.patch deleted file mode 100644 index adce43d1e3..0000000000 --- a/projects/Allwinner/patches/linux/crust/0007-net-stmmac-dwmac-sun8i-Remove-unnecessary-PHY-power-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 3 Jan 2021 05:25:39 -0600 -Subject: [PATCH] net: stmmac: dwmac-sun8i: Remove unnecessary PHY power check - -sun8i_dwmac_unpower_internal_phy already checks if the PHY is powered, -so there is no need to do it again here. - -Signed-off-by: Samuel Holland -Reviewed-by: Chen-Yu Tsai ---- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - ---- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -1018,10 +1018,8 @@ static void sun8i_dwmac_exit(struct plat - { - struct sunxi_priv_data *gmac = priv; - -- if (gmac->variant->soc_has_internal_phy) { -- if (gmac->internal_phy_powered) -- sun8i_dwmac_unpower_internal_phy(gmac); -- } -+ if (gmac->variant->soc_has_internal_phy) -+ sun8i_dwmac_unpower_internal_phy(gmac); - - clk_disable_unprepare(gmac->tx_clk); - diff --git a/projects/Allwinner/patches/linux/crust/0008-net-stmmac-dwmac-sun8i-Use-reset_control_reset.patch b/projects/Allwinner/patches/linux/crust/0008-net-stmmac-dwmac-sun8i-Use-reset_control_reset.patch deleted file mode 100644 index d64e46cf67..0000000000 --- a/projects/Allwinner/patches/linux/crust/0008-net-stmmac-dwmac-sun8i-Use-reset_control_reset.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 3 Jan 2021 05:25:40 -0600 -Subject: [PATCH] net: stmmac: dwmac-sun8i: Use reset_control_reset - -Use the appropriate function instead of reimplementing it, -and update the error message to match the code. - -Signed-off-by: Samuel Holland -Reviewed-by: Chen-Yu Tsai ---- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - ---- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -806,11 +806,9 @@ static int sun8i_dwmac_power_internal_ph - /* Make sure the EPHY is properly reseted, as U-Boot may leave - * it at deasserted state, and thus it may fail to reset EMAC. - */ -- reset_control_assert(gmac->rst_ephy); -- -- ret = reset_control_deassert(gmac->rst_ephy); -+ ret = reset_control_reset(gmac->rst_ephy); - if (ret) { -- dev_err(priv->device, "Cannot deassert internal phy\n"); -+ dev_err(priv->device, "Cannot reset internal PHY\n"); - clk_disable_unprepare(gmac->ephy_clk); - return ret; - } diff --git a/projects/Allwinner/patches/linux/crust/0009-net-stmmac-dwmac-sun8i-Minor-probe-function-cleanup.patch b/projects/Allwinner/patches/linux/crust/0009-net-stmmac-dwmac-sun8i-Minor-probe-function-cleanup.patch deleted file mode 100644 index 19f1d403a3..0000000000 --- a/projects/Allwinner/patches/linux/crust/0009-net-stmmac-dwmac-sun8i-Minor-probe-function-cleanup.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 3 Jan 2021 05:25:41 -0600 -Subject: [PATCH] net: stmmac: dwmac-sun8i: Minor probe function cleanup - -Adjust the spacing and use an explicit "return 0" in the success path -to make the function easier to parse. - -Signed-off-by: Samuel Holland -Reviewed-by: Chen-Yu Tsai ---- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - ---- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -1227,6 +1227,7 @@ static int sun8i_dwmac_probe(struct plat - - ndev = dev_get_drvdata(&pdev->dev); - priv = netdev_priv(ndev); -+ - /* The mux must be registered after parent MDIO - * so after stmmac_dvr_probe() - */ -@@ -1245,7 +1246,8 @@ static int sun8i_dwmac_probe(struct plat - goto dwmac_remove; - } - -- return ret; -+ return 0; -+ - dwmac_mux: - reset_control_put(gmac->rst_ephy); - clk_put(gmac->ephy_clk); diff --git a/projects/Allwinner/patches/linux/crust/0010-net-stmmac-dwmac-sun8i-Add-a-shutdown-callback.patch b/projects/Allwinner/patches/linux/crust/0010-net-stmmac-dwmac-sun8i-Add-a-shutdown-callback.patch deleted file mode 100644 index b02c6cd7b0..0000000000 --- a/projects/Allwinner/patches/linux/crust/0010-net-stmmac-dwmac-sun8i-Add-a-shutdown-callback.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 3 Jan 2021 05:25:42 -0600 -Subject: [PATCH] net: stmmac: dwmac-sun8i: Add a shutdown callback - -The Ethernet MAC and PHY are usually major consumers of power on boards -which may not be able to fully power off (that have no PMIC). Powering -down the MAC and internal PHY saves power while these boards are "off". - -Signed-off-by: Samuel Holland -Reviewed-by: Chen-Yu Tsai ---- - drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - ---- a/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c -@@ -1282,6 +1282,15 @@ static int sun8i_dwmac_remove(struct pla - return 0; - } - -+static void sun8i_dwmac_shutdown(struct platform_device *pdev) -+{ -+ struct net_device *ndev = platform_get_drvdata(pdev); -+ struct stmmac_priv *priv = netdev_priv(ndev); -+ struct sunxi_priv_data *gmac = priv->plat->bsp_priv; -+ -+ sun8i_dwmac_exit(pdev, gmac); -+} -+ - static const struct of_device_id sun8i_dwmac_match[] = { - { .compatible = "allwinner,sun8i-h3-emac", - .data = &emac_variant_h3 }, -@@ -1302,6 +1311,7 @@ MODULE_DEVICE_TABLE(of, sun8i_dwmac_matc - static struct platform_driver sun8i_dwmac_driver = { - .probe = sun8i_dwmac_probe, - .remove = sun8i_dwmac_remove, -+ .shutdown = sun8i_dwmac_shutdown, - .driver = { - .name = "dwmac-sun8i", - .pm = &stmmac_pltfr_pm_ops, diff --git a/projects/Allwinner/patches/linux/crust/0011-i2c-mv64xxx-Add-runtime-PM-support.patch b/projects/Allwinner/patches/linux/crust/0011-i2c-mv64xxx-Add-runtime-PM-support.patch deleted file mode 100644 index 347c5d2d1b..0000000000 --- a/projects/Allwinner/patches/linux/crust/0011-i2c-mv64xxx-Add-runtime-PM-support.patch +++ /dev/null @@ -1,237 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Wed, 12 Feb 2020 22:58:30 -0600 -Subject: [PATCH] i2c: mv64xxx: Add runtime PM support - -To save power, gate the clock when the bus is inactive, during system -sleep, and during shutdown. On some platforms, specifically Allwinner -A13/A20, gating the clock implicitly resets the module as well. Since -the module already needs to be reset after some suspend/resume cycles, -it is simple enough to reset it during every runtime suspend/resume. - -Because the bus may be used by wakeup source IRQ threads, it needs to -be functional as soon as IRQs are enabled. Thus, its system PM hooks -need to run in the noirq phase. - -Signed-off-by: Samuel Holland ---- - drivers/i2c/busses/i2c-mv64xxx.c | 118 ++++++++++++++++++++----------- - 1 file changed, 77 insertions(+), 41 deletions(-) - ---- a/drivers/i2c/busses/i2c-mv64xxx.c -+++ b/drivers/i2c/busses/i2c-mv64xxx.c -@@ -17,6 +17,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -713,6 +714,10 @@ mv64xxx_i2c_xfer(struct i2c_adapter *ada - struct mv64xxx_i2c_data *drv_data = i2c_get_adapdata(adap); - int rc, ret = num; - -+ rc = pm_runtime_resume_and_get(&adap->dev); -+ if (rc) -+ return rc; -+ - BUG_ON(drv_data->msgs != NULL); - drv_data->msgs = msgs; - drv_data->num_msgs = num; -@@ -728,6 +733,9 @@ mv64xxx_i2c_xfer(struct i2c_adapter *ada - drv_data->num_msgs = 0; - drv_data->msgs = NULL; - -+ pm_runtime_mark_last_busy(&adap->dev); -+ pm_runtime_put_autosuspend(&adap->dev); -+ - return ret; - } - -@@ -824,7 +832,6 @@ mv64xxx_of_config(struct mv64xxx_i2c_dat - rc = PTR_ERR(drv_data->rstc); - goto out; - } -- reset_control_deassert(drv_data->rstc); - - /* Its not yet defined how timeouts will be specified in device tree. - * So hard code the value to 1 second. -@@ -871,6 +878,32 @@ mv64xxx_of_config(struct mv64xxx_i2c_dat - #endif /* CONFIG_OF */ - - static int -+mv64xxx_i2c_runtime_suspend(struct device *dev) -+{ -+ struct mv64xxx_i2c_data *drv_data = dev_get_drvdata(dev); -+ -+ reset_control_assert(drv_data->rstc); -+ clk_disable_unprepare(drv_data->reg_clk); -+ clk_disable_unprepare(drv_data->clk); -+ -+ return 0; -+} -+ -+static int -+mv64xxx_i2c_runtime_resume(struct device *dev) -+{ -+ struct mv64xxx_i2c_data *drv_data = dev_get_drvdata(dev); -+ -+ clk_prepare_enable(drv_data->clk); -+ clk_prepare_enable(drv_data->reg_clk); -+ reset_control_reset(drv_data->rstc); -+ -+ mv64xxx_i2c_hw_init(drv_data); -+ -+ return 0; -+} -+ -+static int - mv64xxx_i2c_probe(struct platform_device *pd) - { - struct mv64xxx_i2c_data *drv_data; -@@ -897,18 +930,22 @@ mv64xxx_i2c_probe(struct platform_device - - /* Not all platforms have clocks */ - drv_data->clk = devm_clk_get(&pd->dev, NULL); -- if (PTR_ERR(drv_data->clk) == -EPROBE_DEFER) -- return -EPROBE_DEFER; -- if (!IS_ERR(drv_data->clk)) -- clk_prepare_enable(drv_data->clk); -+ if (IS_ERR(drv_data->clk)) { -+ if (PTR_ERR(drv_data->clk) == -EPROBE_DEFER) -+ return -EPROBE_DEFER; -+ drv_data->clk = NULL; -+ } - - drv_data->reg_clk = devm_clk_get(&pd->dev, "reg"); -- if (PTR_ERR(drv_data->reg_clk) == -EPROBE_DEFER) -- return -EPROBE_DEFER; -- if (!IS_ERR(drv_data->reg_clk)) -- clk_prepare_enable(drv_data->reg_clk); -+ if (IS_ERR(drv_data->reg_clk)) { -+ if (PTR_ERR(drv_data->reg_clk) == -EPROBE_DEFER) -+ return -EPROBE_DEFER; -+ drv_data->reg_clk = NULL; -+ } - - drv_data->irq = platform_get_irq(pd, 0); -+ if (drv_data->irq < 0) -+ return drv_data->irq; - - if (pdata) { - drv_data->freq_m = pdata->freq_m; -@@ -919,11 +956,7 @@ mv64xxx_i2c_probe(struct platform_device - } else if (pd->dev.of_node) { - rc = mv64xxx_of_config(drv_data, &pd->dev); - if (rc) -- goto exit_clk; -- } -- if (drv_data->irq < 0) { -- rc = drv_data->irq; -- goto exit_reset; -+ return rc; - } - - drv_data->adapter.dev.parent = &pd->dev; -@@ -935,7 +968,14 @@ mv64xxx_i2c_probe(struct platform_device - platform_set_drvdata(pd, drv_data); - i2c_set_adapdata(&drv_data->adapter, drv_data); - -- mv64xxx_i2c_hw_init(drv_data); -+ pm_runtime_set_autosuspend_delay(&pd->dev, MSEC_PER_SEC); -+ pm_runtime_use_autosuspend(&pd->dev); -+ pm_runtime_enable(&pd->dev); -+ if (!pm_runtime_enabled(&pd->dev)) { -+ rc = mv64xxx_i2c_runtime_resume(&pd->dev); -+ if (rc) -+ goto exit_disable_pm; -+ } - - rc = request_irq(drv_data->irq, mv64xxx_i2c_intr, 0, - MV64XXX_I2C_CTLR_NAME, drv_data); -@@ -943,7 +983,7 @@ mv64xxx_i2c_probe(struct platform_device - dev_err(&drv_data->adapter.dev, - "mv64xxx: Can't register intr handler irq%d: %d\n", - drv_data->irq, rc); -- goto exit_reset; -+ goto exit_disable_pm; - } else if ((rc = i2c_add_numbered_adapter(&drv_data->adapter)) != 0) { - dev_err(&drv_data->adapter.dev, - "mv64xxx: Can't add i2c adapter, rc: %d\n", -rc); -@@ -954,54 +994,50 @@ mv64xxx_i2c_probe(struct platform_device - - exit_free_irq: - free_irq(drv_data->irq, drv_data); --exit_reset: -- reset_control_assert(drv_data->rstc); --exit_clk: -- clk_disable_unprepare(drv_data->reg_clk); -- clk_disable_unprepare(drv_data->clk); -+exit_disable_pm: -+ pm_runtime_disable(&pd->dev); -+ if (!pm_runtime_status_suspended(&pd->dev)) -+ mv64xxx_i2c_runtime_suspend(&pd->dev); - - return rc; - } - - static int --mv64xxx_i2c_remove(struct platform_device *dev) -+mv64xxx_i2c_remove(struct platform_device *pd) - { -- struct mv64xxx_i2c_data *drv_data = platform_get_drvdata(dev); -+ struct mv64xxx_i2c_data *drv_data = platform_get_drvdata(pd); - - i2c_del_adapter(&drv_data->adapter); - free_irq(drv_data->irq, drv_data); -- reset_control_assert(drv_data->rstc); -- clk_disable_unprepare(drv_data->reg_clk); -- clk_disable_unprepare(drv_data->clk); -+ pm_runtime_disable(&pd->dev); -+ if (!pm_runtime_status_suspended(&pd->dev)) -+ mv64xxx_i2c_runtime_suspend(&pd->dev); - - return 0; - } - --#ifdef CONFIG_PM --static int mv64xxx_i2c_resume(struct device *dev) -+static void -+mv64xxx_i2c_shutdown(struct platform_device *pd) - { -- struct mv64xxx_i2c_data *drv_data = dev_get_drvdata(dev); -- -- mv64xxx_i2c_hw_init(drv_data); -- -- return 0; -+ pm_runtime_disable(&pd->dev); -+ if (!pm_runtime_status_suspended(&pd->dev)) -+ mv64xxx_i2c_runtime_suspend(&pd->dev); - } - --static const struct dev_pm_ops mv64xxx_i2c_pm = { -- .resume = mv64xxx_i2c_resume, -+static const struct dev_pm_ops mv64xxx_i2c_pm_ops = { -+ SET_RUNTIME_PM_OPS(mv64xxx_i2c_runtime_suspend, -+ mv64xxx_i2c_runtime_resume, NULL) -+ SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, -+ pm_runtime_force_resume) - }; - --#define mv64xxx_i2c_pm_ops (&mv64xxx_i2c_pm) --#else --#define mv64xxx_i2c_pm_ops NULL --#endif -- - static struct platform_driver mv64xxx_i2c_driver = { - .probe = mv64xxx_i2c_probe, - .remove = mv64xxx_i2c_remove, -+ .shutdown = mv64xxx_i2c_shutdown, - .driver = { - .name = MV64XXX_I2C_CTLR_NAME, -- .pm = mv64xxx_i2c_pm_ops, -+ .pm = &mv64xxx_i2c_pm_ops, - .of_match_table = mv64xxx_i2c_of_match_table, - }, - }; diff --git a/projects/Allwinner/patches/linux/crust/0012-media-sunxi-cir-Skip-register-writes-during-remove.patch b/projects/Allwinner/patches/linux/crust/0012-media-sunxi-cir-Skip-register-writes-during-remove.patch deleted file mode 100644 index cd57db6a1a..0000000000 --- a/projects/Allwinner/patches/linux/crust/0012-media-sunxi-cir-Skip-register-writes-during-remove.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 10 Jan 2021 00:41:23 -0600 -Subject: [PATCH] media: sunxi-cir: Skip register writes during remove - -These writes occur after the device is already put back in reset, so -they never had any effect. - -Signed-off-by: Samuel Holland ---- - drivers/media/rc/sunxi-cir.c | 10 ---------- - 1 file changed, 10 deletions(-) - ---- a/drivers/media/rc/sunxi-cir.c -+++ b/drivers/media/rc/sunxi-cir.c -@@ -342,22 +342,12 @@ exit_reset_assert: - - static int sunxi_ir_remove(struct platform_device *pdev) - { -- unsigned long flags; - struct sunxi_ir *ir = platform_get_drvdata(pdev); - - clk_disable_unprepare(ir->clk); - clk_disable_unprepare(ir->apb_clk); - reset_control_assert(ir->rst); - -- spin_lock_irqsave(&ir->ir_lock, flags); -- /* disable IR IRQ */ -- writel(0, ir->base + SUNXI_IR_RXINT_REG); -- /* clear All Rx Interrupt Status */ -- writel(REG_RXSTA_CLEARALL, ir->base + SUNXI_IR_RXSTA_REG); -- /* disable IR */ -- writel(0, ir->base + SUNXI_IR_CTL_REG); -- spin_unlock_irqrestore(&ir->ir_lock, flags); -- - rc_unregister_device(ir->rc); - return 0; - } diff --git a/projects/Allwinner/patches/linux/crust/0013-media-sunxi-cir-Remove-unnecessary-spinlock.patch b/projects/Allwinner/patches/linux/crust/0013-media-sunxi-cir-Remove-unnecessary-spinlock.patch deleted file mode 100644 index 748508337d..0000000000 --- a/projects/Allwinner/patches/linux/crust/0013-media-sunxi-cir-Remove-unnecessary-spinlock.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 10 Jan 2021 00:43:19 -0600 -Subject: [PATCH] media: sunxi-cir: Remove unnecessary spinlock - -Only one register, SUNXI_IR_CIR_REG, is written from outside the -interrupt handler, and that register is not written from inside it. -There is no overlap between different contexts, so no lock is needed. - -Signed-off-by: Samuel Holland ---- - drivers/media/rc/sunxi-cir.c | 10 ---------- - 1 file changed, 10 deletions(-) - ---- a/drivers/media/rc/sunxi-cir.c -+++ b/drivers/media/rc/sunxi-cir.c -@@ -86,7 +86,6 @@ struct sunxi_ir_quirks { - }; - - struct sunxi_ir { -- spinlock_t ir_lock; - struct rc_dev *rc; - void __iomem *base; - int irq; -@@ -105,8 +104,6 @@ static irqreturn_t sunxi_ir_irq(int irqn - struct sunxi_ir *ir = dev_id; - struct ir_raw_event rawir = {}; - -- spin_lock(&ir->ir_lock); -- - status = readl(ir->base + SUNXI_IR_RXSTA_REG); - - /* clean all pending statuses */ -@@ -137,8 +134,6 @@ static irqreturn_t sunxi_ir_irq(int irqn - ir_raw_event_handle(ir->rc); - } - -- spin_unlock(&ir->ir_lock); -- - return IRQ_HANDLED; - } - -@@ -160,17 +155,14 @@ static int sunxi_ir_set_timeout(struct r - { - struct sunxi_ir *ir = rc_dev->priv; - unsigned int base_clk = clk_get_rate(ir->clk); -- unsigned long flags; - - unsigned int ithr = sunxi_usec_to_ithr(base_clk, timeout); - - dev_dbg(rc_dev->dev.parent, "setting idle threshold to %u\n", ithr); - -- spin_lock_irqsave(&ir->ir_lock, flags); - /* Set noise threshold and idle threshold */ - writel(REG_CIR_NTHR(SUNXI_IR_RXNOISE) | REG_CIR_ITHR(ithr), - ir->base + SUNXI_IR_CIR_REG); -- spin_unlock_irqrestore(&ir->ir_lock, flags); - - rc_dev->timeout = sunxi_ithr_to_usec(base_clk, ithr); - -@@ -199,8 +191,6 @@ static int sunxi_ir_probe(struct platfor - return -ENODEV; - } - -- spin_lock_init(&ir->ir_lock); -- - ir->fifo_size = quirks->fifo_size; - - /* Clock */ diff --git a/projects/Allwinner/patches/linux/crust/0014-media-sunxi-cir-Factor-out-hardware-initialization.patch b/projects/Allwinner/patches/linux/crust/0014-media-sunxi-cir-Factor-out-hardware-initialization.patch deleted file mode 100644 index b5ea04bc71..0000000000 --- a/projects/Allwinner/patches/linux/crust/0014-media-sunxi-cir-Factor-out-hardware-initialization.patch +++ /dev/null @@ -1,223 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 10 Jan 2021 00:50:32 -0600 -Subject: [PATCH] media: sunxi-cir: Factor out hardware initialization - -Signed-off-by: Samuel Holland ---- - drivers/media/rc/sunxi-cir.c | 142 ++++++++++++++++++++--------------- - 1 file changed, 82 insertions(+), 60 deletions(-) - ---- a/drivers/media/rc/sunxi-cir.c -+++ b/drivers/media/rc/sunxi-cir.c -@@ -90,6 +90,7 @@ struct sunxi_ir { - void __iomem *base; - int irq; - int fifo_size; -+ u32 base_clk_freq; - struct clk *clk; - struct clk *apb_clk; - struct reset_control *rst; -@@ -169,10 +170,81 @@ static int sunxi_ir_set_timeout(struct r - return 0; - } - -+static int sunxi_ir_hw_init(struct device *dev) -+{ -+ struct sunxi_ir *ir = dev_get_drvdata(dev); -+ unsigned long tmp; -+ int ret; -+ -+ ret = reset_control_deassert(ir->rst); -+ if (ret) -+ return ret; -+ -+ ret = clk_set_rate(ir->clk, ir->base_clk_freq); -+ if (ret) { -+ dev_err(dev, "set ir base clock failed!\n"); -+ goto exit_reset_assert; -+ } -+ dev_dbg(dev, "set base clock frequency to %d Hz.\n", ir->base_clk_freq); -+ -+ if (clk_prepare_enable(ir->apb_clk)) { -+ dev_err(dev, "try to enable apb_ir_clk failed\n"); -+ ret = -EINVAL; -+ goto exit_reset_assert; -+ } -+ -+ if (clk_prepare_enable(ir->clk)) { -+ dev_err(dev, "try to enable ir_clk failed\n"); -+ ret = -EINVAL; -+ goto exit_apb_clk_disable; -+ } -+ -+ /* Enable CIR Mode */ -+ writel(REG_CTL_MD, ir->base + SUNXI_IR_CTL_REG); -+ -+ /* Set noise threshold and idle threshold */ -+ sunxi_ir_set_timeout(ir->rc, ir->rc->timeout); -+ -+ /* Invert Input Signal */ -+ writel(REG_RXCTL_RPPI, ir->base + SUNXI_IR_RXCTL_REG); -+ -+ /* Clear All Rx Interrupt Status */ -+ writel(REG_RXSTA_CLEARALL, ir->base + SUNXI_IR_RXSTA_REG); -+ -+ /* -+ * Enable IRQ on overflow, packet end, FIFO available with trigger -+ * level -+ */ -+ writel(REG_RXINT_ROI_EN | REG_RXINT_RPEI_EN | -+ REG_RXINT_RAI_EN | REG_RXINT_RAL(ir->fifo_size / 2 - 1), -+ ir->base + SUNXI_IR_RXINT_REG); -+ -+ /* Enable IR Module */ -+ tmp = readl(ir->base + SUNXI_IR_CTL_REG); -+ writel(tmp | REG_CTL_GEN | REG_CTL_RXEN, ir->base + SUNXI_IR_CTL_REG); -+ -+ return 0; -+ -+exit_apb_clk_disable: -+ clk_disable_unprepare(ir->apb_clk); -+exit_reset_assert: -+ reset_control_assert(ir->rst); -+ -+ return ret; -+} -+ -+static void sunxi_ir_hw_exit(struct device *dev) -+{ -+ struct sunxi_ir *ir = dev_get_drvdata(dev); -+ -+ clk_disable_unprepare(ir->clk); -+ clk_disable_unprepare(ir->apb_clk); -+ reset_control_assert(ir->rst); -+} -+ - static int sunxi_ir_probe(struct platform_device *pdev) - { - int ret = 0; -- unsigned long tmp = 0; - - struct device *dev = &pdev->dev; - struct device_node *dn = dev->of_node; -@@ -207,49 +279,26 @@ static int sunxi_ir_probe(struct platfor - - /* Base clock frequency (optional) */ - of_property_read_u32(dn, "clock-frequency", &b_clk_freq); -+ ir->base_clk_freq = b_clk_freq; - - /* Reset */ - if (quirks->has_reset) { - ir->rst = devm_reset_control_get_exclusive(dev, NULL); - if (IS_ERR(ir->rst)) - return PTR_ERR(ir->rst); -- ret = reset_control_deassert(ir->rst); -- if (ret) -- return ret; -- } -- -- ret = clk_set_rate(ir->clk, b_clk_freq); -- if (ret) { -- dev_err(dev, "set ir base clock failed!\n"); -- goto exit_reset_assert; -- } -- dev_dbg(dev, "set base clock frequency to %d Hz.\n", b_clk_freq); -- -- if (clk_prepare_enable(ir->apb_clk)) { -- dev_err(dev, "try to enable apb_ir_clk failed\n"); -- ret = -EINVAL; -- goto exit_reset_assert; -- } -- -- if (clk_prepare_enable(ir->clk)) { -- dev_err(dev, "try to enable ir_clk failed\n"); -- ret = -EINVAL; -- goto exit_clkdisable_apb_clk; - } - - /* IO */ - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - ir->base = devm_ioremap_resource(dev, res); - if (IS_ERR(ir->base)) { -- ret = PTR_ERR(ir->base); -- goto exit_clkdisable_clk; -+ return PTR_ERR(ir->base); - } - - ir->rc = rc_allocate_device(RC_DRIVER_IR_RAW); - if (!ir->rc) { - dev_err(dev, "failed to allocate device\n"); -- ret = -ENOMEM; -- goto exit_clkdisable_clk; -+ return -ENOMEM; - } - - ir->rc->priv = ir; -@@ -265,6 +314,7 @@ static int sunxi_ir_probe(struct platfor - ir->rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER; - /* Frequency after IR internal divider with sample period in us */ - ir->rc->rx_resolution = (USEC_PER_SEC / (b_clk_freq / 64)); -+ ir->rc->timeout = IR_DEFAULT_TIMEOUT; - ir->rc->min_timeout = sunxi_ithr_to_usec(b_clk_freq, 0); - ir->rc->max_timeout = sunxi_ithr_to_usec(b_clk_freq, 255); - ir->rc->s_timeout = sunxi_ir_set_timeout; -@@ -291,41 +341,15 @@ static int sunxi_ir_probe(struct platfor - goto exit_free_dev; - } - -- /* Enable CIR Mode */ -- writel(REG_CTL_MD, ir->base+SUNXI_IR_CTL_REG); -- -- /* Set noise threshold and idle threshold */ -- sunxi_ir_set_timeout(ir->rc, IR_DEFAULT_TIMEOUT); -- -- /* Invert Input Signal */ -- writel(REG_RXCTL_RPPI, ir->base + SUNXI_IR_RXCTL_REG); -- -- /* Clear All Rx Interrupt Status */ -- writel(REG_RXSTA_CLEARALL, ir->base + SUNXI_IR_RXSTA_REG); -- -- /* -- * Enable IRQ on overflow, packet end, FIFO available with trigger -- * level -- */ -- writel(REG_RXINT_ROI_EN | REG_RXINT_RPEI_EN | -- REG_RXINT_RAI_EN | REG_RXINT_RAL(ir->fifo_size / 2 - 1), -- ir->base + SUNXI_IR_RXINT_REG); -- -- /* Enable IR Module */ -- tmp = readl(ir->base + SUNXI_IR_CTL_REG); -- writel(tmp | REG_CTL_GEN | REG_CTL_RXEN, ir->base + SUNXI_IR_CTL_REG); -+ ret = sunxi_ir_hw_init(dev); -+ if (ret) -+ goto exit_free_dev; - - dev_info(dev, "initialized sunXi IR driver\n"); - return 0; - - exit_free_dev: - rc_free_device(ir->rc); --exit_clkdisable_clk: -- clk_disable_unprepare(ir->clk); --exit_clkdisable_apb_clk: -- clk_disable_unprepare(ir->apb_clk); --exit_reset_assert: -- reset_control_assert(ir->rst); - - return ret; - } -@@ -334,11 +358,9 @@ static int sunxi_ir_remove(struct platfo - { - struct sunxi_ir *ir = platform_get_drvdata(pdev); - -- clk_disable_unprepare(ir->clk); -- clk_disable_unprepare(ir->apb_clk); -- reset_control_assert(ir->rst); -- -+ sunxi_ir_hw_exit(&pdev->dev); - rc_unregister_device(ir->rc); -+ - return 0; - } - diff --git a/projects/Allwinner/patches/linux/crust/0015-media-sunxi-cir-Implement-suspend-resume-shutdown-ca.patch b/projects/Allwinner/patches/linux/crust/0015-media-sunxi-cir-Implement-suspend-resume-shutdown-ca.patch deleted file mode 100644 index be55dd425c..0000000000 --- a/projects/Allwinner/patches/linux/crust/0015-media-sunxi-cir-Implement-suspend-resume-shutdown-ca.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 10 Jan 2021 00:51:31 -0600 -Subject: [PATCH] media: sunxi-cir: Implement suspend/resume/shutdown callbacks - -Signed-off-by: Samuel Holland ---- - drivers/media/rc/sunxi-cir.c | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - ---- a/drivers/media/rc/sunxi-cir.c -+++ b/drivers/media/rc/sunxi-cir.c -@@ -242,6 +242,18 @@ static void sunxi_ir_hw_exit(struct devi - reset_control_assert(ir->rst); - } - -+static int __maybe_unused sunxi_ir_suspend(struct device *dev) -+{ -+ sunxi_ir_hw_exit(dev); -+ -+ return 0; -+} -+ -+static int __maybe_unused sunxi_ir_resume(struct device *dev) -+{ -+ return sunxi_ir_hw_init(dev); -+} -+ - static int sunxi_ir_probe(struct platform_device *pdev) - { - int ret = 0; -@@ -364,6 +376,11 @@ static int sunxi_ir_remove(struct platfo - return 0; - } - -+static void sunxi_ir_shutdown(struct platform_device *pdev) -+{ -+ sunxi_ir_hw_exit(&pdev->dev); -+} -+ - static const struct sunxi_ir_quirks sun4i_a10_ir_quirks = { - .has_reset = false, - .fifo_size = 16, -@@ -396,12 +413,16 @@ static const struct of_device_id sunxi_i - }; - MODULE_DEVICE_TABLE(of, sunxi_ir_match); - -+static SIMPLE_DEV_PM_OPS(sunxi_ir_pm_ops, sunxi_ir_suspend, sunxi_ir_resume); -+ - static struct platform_driver sunxi_ir_driver = { - .probe = sunxi_ir_probe, - .remove = sunxi_ir_remove, -+ .shutdown = sunxi_ir_shutdown, - .driver = { - .name = SUNXI_IR_DEV, - .of_match_table = sunxi_ir_match, -+ .pm = &sunxi_ir_pm_ops, - }, - }; - diff --git a/projects/Allwinner/patches/linux/crust/0016-irqchip-sun6i-r-Use-a-stacked-irqchip-driver.patch b/projects/Allwinner/patches/linux/crust/0016-irqchip-sun6i-r-Use-a-stacked-irqchip-driver.patch deleted file mode 100644 index 0bc0b2fd38..0000000000 --- a/projects/Allwinner/patches/linux/crust/0016-irqchip-sun6i-r-Use-a-stacked-irqchip-driver.patch +++ /dev/null @@ -1,437 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 25 Aug 2019 05:35:08 -0500 -Subject: [PATCH] irqchip/sun6i-r: Use a stacked irqchip driver - -The R_INTC in the A31 and newer sun8i/sun50i SoCs is more similar to the -original sun4i interrupt controller than the sun7i/sun9i NMI controller. -It is used for two distinct purposes: - - To control the trigger, latch, and mask for the NMI input pin - - To provide the interrupt input for the ARISC coprocessor - -As this interrupt controller is not documented, information about it -comes from vendor-provided firmware blobs and from experimentation. - -Differences from the sun4i interrupt controller appear to be: - - It only has one or two registers of each kind (max 32 or 64 IRQs) - - Multiplexing logic is added to support additional inputs - - There is no FIQ-related logic - - There is no interrupt priority logic - -In order to fulfill its two purposes, this hardware block combines four -types of IRQs. First, the NMI pin is routed to the "IRQ 0" input on this -chip, with a trigger type controlled by the NMI_CTRL_REG. The "IRQ 0 -pending" output from this chip, if enabled, is then routed to a SPI IRQ -input on the GIC. In other words, bit 0 of IRQ_ENABLE_REG *does* affect -the NMI IRQ seen at the GIC. - -The NMI is followed by a contiguous block of 15 "direct" (my name for -them) IRQ inputs that are connected in parallel to both R_INTC and the -GIC. Or in other words, these bits of IRQ_ENABLE_REG *do not* affect the -IRQs seen at the GIC. - -Following the direct IRQs are the ARISC's copy of banked IRQs for shared -peripherals. These are not relevant to Linux. The remaining IRQs are -connected to a multiplexer and provide access to the first (up to) 128 -SPIs from the ARISC. This range of SPIs overlaps with the direct IRQs. - -Because of the 1:1 correspondence between R_INTC and GIC inputs, this is -a perfect scenario for using a stacked irqchip driver. We want to hook -into setting the NMI trigger type, but not actually handle any IRQ here. - -To allow access to all multiplexed IRQs, this driver requires a new -binding where the interrupt number matches the GIC interrupt number. -(This moves the NMI from number 0 to 32 or 96, depending on the SoC.) -For simplicity, copy the three-cell GIC binding; this disambiguates -interrupt 0 in the old binding (the NMI) from interrupt 0 in the new -binding (SPI 0) by the number of cells. - -Since R_INTC is in the always-on power domain, and its output is visible -to the power management coprocessor, a stacked irqchip driver provides a -simple way to add wakeup support to any of its IRQs. That is the next -patch; for now, just the NMI is moved over. - -This commit mostly reverts commit 173bda53b340 ("irqchip/sunxi-nmi: -Support sun6i-a31-r-intc compatible"). - -Signed-off-by: Samuel Holland ---- - arch/arm/mach-sunxi/Kconfig | 2 + - arch/arm64/Kconfig.platforms | 2 + - drivers/irqchip/Makefile | 1 + - drivers/irqchip/irq-sun6i-r.c | 284 ++++++++++++++++++++++++++++++++ - drivers/irqchip/irq-sunxi-nmi.c | 26 +-- - 5 files changed, 292 insertions(+), 23 deletions(-) - create mode 100644 drivers/irqchip/irq-sun6i-r.c - ---- a/arch/arm/mach-sunxi/Kconfig -+++ b/arch/arm/mach-sunxi/Kconfig -@@ -6,6 +6,8 @@ menuconfig ARCH_SUNXI - select CLKSRC_MMIO - select GENERIC_IRQ_CHIP - select GPIOLIB -+ select IRQ_DOMAIN_HIERARCHY -+ select IRQ_FASTEOI_HIERARCHY_HANDLERS - select PINCTRL - select PM_OPP - select SUN4I_TIMER ---- a/arch/arm64/Kconfig.platforms -+++ b/arch/arm64/Kconfig.platforms -@@ -17,6 +17,8 @@ config ARCH_SUNXI - bool "Allwinner sunxi 64-bit SoC Family" - select ARCH_HAS_RESET_CONTROLLER - select GENERIC_IRQ_CHIP -+ select IRQ_DOMAIN_HIERARCHY -+ select IRQ_FASTEOI_HIERARCHY_HANDLERS - select PINCTRL - select RESET_CONTROLLER - help ---- a/drivers/irqchip/Makefile -+++ b/drivers/irqchip/Makefile -@@ -24,6 +24,7 @@ obj-$(CONFIG_OR1K_PIC) += irq-or1k-pic - obj-$(CONFIG_ORION_IRQCHIP) += irq-orion.o - obj-$(CONFIG_OMAP_IRQCHIP) += irq-omap-intc.o - obj-$(CONFIG_ARCH_SUNXI) += irq-sun4i.o -+obj-$(CONFIG_ARCH_SUNXI) += irq-sun6i-r.o - obj-$(CONFIG_ARCH_SUNXI) += irq-sunxi-nmi.o - obj-$(CONFIG_ARCH_SPEAR3XX) += spear-shirq.o - obj-$(CONFIG_ARM_GIC) += irq-gic.o irq-gic-common.o ---- /dev/null -+++ b/drivers/irqchip/irq-sun6i-r.c -@@ -0,0 +1,284 @@ -+// SPDX-License-Identifier: GPL-2.0-only -+/* -+ * The R_INTC in Allwinner A31 and newer SoCs manages several types of -+ * interrupts, as shown below: -+ * -+ * NMI IRQ DIRECT IRQs MUXED IRQs -+ * bit 0 bits 1-15^ bits 19-31 -+ * -+ * +---------+ +---------+ +---------+ +---------+ -+ * | NMI Pad | | IRQ d | | IRQ m | | IRQ m+7 | -+ * +---------+ +---------+ +---------+ +---------+ -+ * | | | | | | | -+ * | | | | |......| | -+ * +------V------+ +------------+ | | | +--V------V--+ | -+ * | Invert/ | | Write 1 to | | | | | AND with | | -+ * | Edge Detect | | PENDING[0] | | | | | MUX[m/8] | | -+ * +-------------+ +------------+ | | | +------------+ | -+ * | | | | | | | -+ * +--V-------V--+ +--V--+ | +--V--+ | +--V--+ -+ * | Set Reset| | GIC | | | GIC | | | GIC | -+ * | Latch | | SPI | | | SPI |... | ...| SPI | -+ * +-------------+ | N+d | | | m | | | m+7 | -+ * | | +-----+ | +-----+ | +-----+ -+ * | | | | -+ * +-------V-+ +-V----------+ +---------V--+ +--------V--------+ -+ * | GIC SPI | | AND with | | AND with | | AND with | -+ * | N (=32) | | ENABLE[0] | | ENABLE[d] | | ENABLE[19+m/8] | -+ * +---------+ +------------+ +------------+ +-----------------+ -+ * | | | -+ * +------V-----+ +------V-----+ +--------V--------+ -+ * | Read | | Read | | Read | -+ * | PENDING[0] | | PENDING[d] | | PENDING[19+m/8] | -+ * +------------+ +------------+ +-----------------+ -+ * -+ * ^ bits 16-18 are direct IRQs for peripherals with banked interrupts, such as -+ * the MSGBOX. These IRQs do not map to any GIC SPI. -+ * -+ * The H6 variant adds two more (banked) direct IRQs and implements the full -+ * set of 128 mux bits. This requires a second set of top-level registers. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#define SUN6I_NMI_CTRL (0x0c) -+#define SUN6I_IRQ_PENDING(n) (0x10 + 4 * (n)) -+#define SUN6I_IRQ_ENABLE(n) (0x40 + 4 * (n)) -+#define SUN6I_MUX_ENABLE(n) (0xc0 + 4 * (n)) -+ -+#define SUN6I_NMI_SRC_TYPE_LEVEL_LOW 0 -+#define SUN6I_NMI_SRC_TYPE_EDGE_FALLING 1 -+#define SUN6I_NMI_SRC_TYPE_LEVEL_HIGH 2 -+#define SUN6I_NMI_SRC_TYPE_EDGE_RISING 3 -+ -+#define SUN6I_NMI_BIT BIT(0) -+ -+#define SUN6I_NMI_NEEDS_ACK ((void *)1) -+ -+#define SUN6I_NR_TOP_LEVEL_IRQS 64 -+#define SUN6I_NR_DIRECT_IRQS 16 -+#define SUN6I_NR_MUX_BITS 128 -+ -+static void __iomem *base; -+static irq_hw_number_t nmi_hwirq; -+ -+static void sun6i_r_intc_ack_nmi(void) -+{ -+ writel(SUN6I_NMI_BIT, base + SUN6I_IRQ_PENDING(0)); -+} -+ -+static void sun6i_r_intc_nmi_ack(struct irq_data *data) -+{ -+ if (irqd_get_trigger_type(data) & IRQ_TYPE_EDGE_BOTH) -+ sun6i_r_intc_ack_nmi(); -+ else -+ data->chip_data = SUN6I_NMI_NEEDS_ACK; -+} -+ -+static void sun6i_r_intc_nmi_eoi(struct irq_data *data) -+{ -+ /* For oneshot IRQs, delay the ack until the IRQ is unmasked. */ -+ if (data->chip_data == SUN6I_NMI_NEEDS_ACK && !irqd_irq_masked(data)) { -+ sun6i_r_intc_ack_nmi(); -+ data->chip_data = 0; -+ } -+ -+ irq_chip_eoi_parent(data); -+} -+ -+static void sun6i_r_intc_nmi_unmask(struct irq_data *data) -+{ -+ if (data->chip_data == SUN6I_NMI_NEEDS_ACK) { -+ sun6i_r_intc_ack_nmi(); -+ data->chip_data = 0; -+ } -+ -+ irq_chip_unmask_parent(data); -+} -+ -+static int sun6i_r_intc_nmi_set_type(struct irq_data *data, unsigned int type) -+{ -+ u32 nmi_src_type; -+ -+ switch (type) { -+ case IRQ_TYPE_EDGE_RISING: -+ nmi_src_type = SUN6I_NMI_SRC_TYPE_EDGE_RISING; -+ break; -+ case IRQ_TYPE_EDGE_FALLING: -+ nmi_src_type = SUN6I_NMI_SRC_TYPE_EDGE_FALLING; -+ break; -+ case IRQ_TYPE_LEVEL_HIGH: -+ nmi_src_type = SUN6I_NMI_SRC_TYPE_LEVEL_HIGH; -+ break; -+ case IRQ_TYPE_LEVEL_LOW: -+ nmi_src_type = SUN6I_NMI_SRC_TYPE_LEVEL_LOW; -+ break; -+ default: -+ return -EINVAL; -+ } -+ -+ writel_relaxed(nmi_src_type, base + SUN6I_NMI_CTRL); -+ -+ /* -+ * The "External NMI" GIC input connects to a latch inside R_INTC, not -+ * directly to the pin. So the GIC trigger type does not depend on the -+ * NMI pin trigger type. -+ */ -+ return irq_chip_set_type_parent(data, IRQ_TYPE_LEVEL_HIGH); -+} -+ -+static int sun6i_r_intc_nmi_set_irqchip_state(struct irq_data *data, -+ enum irqchip_irq_state which, -+ bool state) -+{ -+ if (which == IRQCHIP_STATE_PENDING && !state) -+ sun6i_r_intc_ack_nmi(); -+ -+ return irq_chip_set_parent_state(data, which, state); -+} -+ -+static struct irq_chip sun6i_r_intc_nmi_chip = { -+ .name = "sun6i-r-intc", -+ .irq_ack = sun6i_r_intc_nmi_ack, -+ .irq_mask = irq_chip_mask_parent, -+ .irq_unmask = sun6i_r_intc_nmi_unmask, -+ .irq_eoi = sun6i_r_intc_nmi_eoi, -+ .irq_set_affinity = irq_chip_set_affinity_parent, -+ .irq_set_type = sun6i_r_intc_nmi_set_type, -+ .irq_set_irqchip_state = sun6i_r_intc_nmi_set_irqchip_state, -+ .flags = IRQCHIP_SET_TYPE_MASKED | -+ IRQCHIP_SKIP_SET_WAKE, -+}; -+ -+static int sun6i_r_intc_domain_translate(struct irq_domain *domain, -+ struct irq_fwspec *fwspec, -+ unsigned long *hwirq, -+ unsigned int *type) -+{ -+ /* Accept the old two-cell binding for the NMI only. */ -+ if (fwspec->param_count == 2 && fwspec->param[0] == 0) { -+ *hwirq = nmi_hwirq; -+ *type = fwspec->param[1] & IRQ_TYPE_SENSE_MASK; -+ return 0; -+ } -+ -+ /* Otherwise this binding should match the GIC SPI binding. */ -+ if (fwspec->param_count < 3) -+ return -EINVAL; -+ if (fwspec->param[0] != GIC_SPI) -+ return -EINVAL; -+ -+ *hwirq = fwspec->param[1]; -+ *type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; -+ -+ return 0; -+} -+ -+static int sun6i_r_intc_domain_alloc(struct irq_domain *domain, -+ unsigned int virq, -+ unsigned int nr_irqs, void *arg) -+{ -+ struct irq_fwspec *fwspec = arg; -+ struct irq_fwspec gic_fwspec; -+ unsigned long hwirq; -+ unsigned int type; -+ int i, ret; -+ -+ ret = sun6i_r_intc_domain_translate(domain, fwspec, &hwirq, &type); -+ if (ret) -+ return ret; -+ if (hwirq + nr_irqs > SUN6I_NR_MUX_BITS) -+ return -EINVAL; -+ -+ /* Construct a GIC-compatible fwspec from this fwspec. */ -+ gic_fwspec = (struct irq_fwspec) { -+ .fwnode = domain->parent->fwnode, -+ .param_count = 3, -+ .param = { GIC_SPI, hwirq, type }, -+ }; -+ -+ ret = irq_domain_alloc_irqs_parent(domain, virq, nr_irqs, &gic_fwspec); -+ if (ret) -+ return ret; -+ -+ for (i = 0; i < nr_irqs; ++i, ++hwirq, ++virq) { -+ if (hwirq == nmi_hwirq) { -+ irq_domain_set_hwirq_and_chip(domain, virq, hwirq, -+ &sun6i_r_intc_nmi_chip, 0); -+ irq_set_handler(virq, handle_fasteoi_ack_irq); -+ } else { -+ /* Only the NMI is currently supported. */ -+ return -EINVAL; -+ } -+ } -+ -+ return 0; -+} -+ -+static const struct irq_domain_ops sun6i_r_intc_domain_ops = { -+ .translate = sun6i_r_intc_domain_translate, -+ .alloc = sun6i_r_intc_domain_alloc, -+ .free = irq_domain_free_irqs_common, -+}; -+ -+static void sun6i_r_intc_resume(void) -+{ -+ int i; -+ -+ /* Only the NMI is relevant during normal operation. */ -+ writel_relaxed(SUN6I_NMI_BIT, base + SUN6I_IRQ_ENABLE(0)); -+ for (i = 1; i < BITS_TO_U32(SUN6I_NR_TOP_LEVEL_IRQS); ++i) -+ writel_relaxed(0, base + SUN6I_IRQ_ENABLE(i)); -+} -+ -+static int __init sun6i_r_intc_init(struct device_node *node, -+ struct device_node *parent) -+{ -+ struct irq_domain *domain, *parent_domain; -+ struct of_phandle_args nmi_parent; -+ int ret; -+ -+ /* Extract the NMI hwirq number from the OF node. */ -+ ret = of_irq_parse_one(node, 0, &nmi_parent); -+ if (ret) -+ return ret; -+ if (nmi_parent.args_count < 3 || -+ nmi_parent.args[0] != GIC_SPI || -+ nmi_parent.args[2] != IRQ_TYPE_LEVEL_HIGH) -+ return -EINVAL; -+ nmi_hwirq = nmi_parent.args[1]; -+ -+ parent_domain = irq_find_host(parent); -+ if (!parent_domain) { -+ pr_err("%pOF: Failed to obtain parent domain\n", node); -+ return -ENXIO; -+ } -+ -+ base = of_io_request_and_map(node, 0, NULL); -+ if (IS_ERR(base)) { -+ pr_err("%pOF: Failed to map MMIO region\n", node); -+ return PTR_ERR(base); -+ } -+ -+ domain = irq_domain_add_hierarchy(parent_domain, 0, 0, node, -+ &sun6i_r_intc_domain_ops, NULL); -+ if (!domain) { -+ pr_err("%pOF: Failed to allocate domain\n", node); -+ iounmap(base); -+ return -ENOMEM; -+ } -+ -+ sun6i_r_intc_ack_nmi(); -+ sun6i_r_intc_resume(); -+ -+ return 0; -+} -+IRQCHIP_DECLARE(sun6i_r_intc, "allwinner,sun6i-a31-r-intc", sun6i_r_intc_init); ---- a/drivers/irqchip/irq-sunxi-nmi.c -+++ b/drivers/irqchip/irq-sunxi-nmi.c -@@ -27,18 +27,12 @@ - - #define SUNXI_NMI_IRQ_BIT BIT(0) - --#define SUN6I_R_INTC_CTRL 0x0c --#define SUN6I_R_INTC_PENDING 0x10 --#define SUN6I_R_INTC_ENABLE 0x40 -- - /* - * For deprecated sun6i-a31-sc-nmi compatible. -- * Registers are offset by 0x0c. - */ --#define SUN6I_R_INTC_NMI_OFFSET 0x0c --#define SUN6I_NMI_CTRL (SUN6I_R_INTC_CTRL - SUN6I_R_INTC_NMI_OFFSET) --#define SUN6I_NMI_PENDING (SUN6I_R_INTC_PENDING - SUN6I_R_INTC_NMI_OFFSET) --#define SUN6I_NMI_ENABLE (SUN6I_R_INTC_ENABLE - SUN6I_R_INTC_NMI_OFFSET) -+#define SUN6I_NMI_CTRL 0x00 -+#define SUN6I_NMI_PENDING 0x04 -+#define SUN6I_NMI_ENABLE 0x34 - - #define SUN7I_NMI_CTRL 0x00 - #define SUN7I_NMI_PENDING 0x04 -@@ -61,12 +55,6 @@ struct sunxi_sc_nmi_reg_offs { - u32 enable; - }; - --static const struct sunxi_sc_nmi_reg_offs sun6i_r_intc_reg_offs __initconst = { -- .ctrl = SUN6I_R_INTC_CTRL, -- .pend = SUN6I_R_INTC_PENDING, -- .enable = SUN6I_R_INTC_ENABLE, --}; -- - static const struct sunxi_sc_nmi_reg_offs sun6i_reg_offs __initconst = { - .ctrl = SUN6I_NMI_CTRL, - .pend = SUN6I_NMI_PENDING, -@@ -232,14 +220,6 @@ fail_irqd_remove: - return ret; - } - --static int __init sun6i_r_intc_irq_init(struct device_node *node, -- struct device_node *parent) --{ -- return sunxi_sc_nmi_irq_init(node, &sun6i_r_intc_reg_offs); --} --IRQCHIP_DECLARE(sun6i_r_intc, "allwinner,sun6i-a31-r-intc", -- sun6i_r_intc_irq_init); -- - static int __init sun6i_sc_nmi_irq_init(struct device_node *node, - struct device_node *parent) - { diff --git a/projects/Allwinner/patches/linux/crust/0017-irqchip-sun6i-r-Add-wakeup-support.patch b/projects/Allwinner/patches/linux/crust/0017-irqchip-sun6i-r-Add-wakeup-support.patch deleted file mode 100644 index 2c7140aa75..0000000000 --- a/projects/Allwinner/patches/linux/crust/0017-irqchip-sun6i-r-Add-wakeup-support.patch +++ /dev/null @@ -1,210 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 12 Jan 2020 20:00:36 -0600 -Subject: [PATCH] irqchip/sun6i-r: Add wakeup support - -Maintain bitmaps of wake-enabled IRQs and mux inputs, and program them -to the hardware during the syscore phase of suspend and shutdown. Then -restore the original set of enabled IRQs (only the NMI) during resume. - -This serves two purposes. First, it lets power management firmware -running on the ARISC coprocessor know which wakeup sources Linux wants -to have enabled. That way, it can avoid turning them off when it shuts -down the remainder of the clock tree. Second, it preconfigures the -coprocessor's interrupt controller, so the firmware's wakeup logic -is as simple as waiting for an interrupt to arrive. - -The suspend/resume logic is not conditional on PM_SLEEP because it is -identical to the init/shutdown logic. Wake IRQs may be enabled during -shutdown to allow powering the board back on. As an example, see -commit a5c5e50cce9d ("Input: gpio-keys - add shutdown callback"). - -Signed-off-by: Samuel Holland ---- - drivers/irqchip/irq-sun6i-r.c | 107 ++++++++++++++++++++++++++++++++-- - 1 file changed, 101 insertions(+), 6 deletions(-) - ---- a/drivers/irqchip/irq-sun6i-r.c -+++ b/drivers/irqchip/irq-sun6i-r.c -@@ -39,6 +39,7 @@ - * set of 128 mux bits. This requires a second set of top-level registers. - */ - -+#include - #include - #include - #include -@@ -46,6 +47,7 @@ - #include - #include - #include -+#include - - #include - -@@ -67,8 +69,17 @@ - #define SUN6I_NR_DIRECT_IRQS 16 - #define SUN6I_NR_MUX_BITS 128 - -+struct sun6i_r_intc_variant { -+ u32 first_mux_irq; -+ u32 nr_mux_irqs; -+ u32 mux_valid[BITS_TO_U32(SUN6I_NR_MUX_BITS)]; -+}; -+ - static void __iomem *base; - static irq_hw_number_t nmi_hwirq; -+static DECLARE_BITMAP(wake_irq_enabled, SUN6I_NR_TOP_LEVEL_IRQS); -+static DECLARE_BITMAP(wake_mux_enabled, SUN6I_NR_MUX_BITS); -+static DECLARE_BITMAP(wake_mux_valid, SUN6I_NR_MUX_BITS); - - static void sun6i_r_intc_ack_nmi(void) - { -@@ -145,6 +156,21 @@ static int sun6i_r_intc_nmi_set_irqchip_ - return irq_chip_set_parent_state(data, which, state); - } - -+static int sun6i_r_intc_irq_set_wake(struct irq_data *data, unsigned int on) -+{ -+ unsigned long offset_from_nmi = data->hwirq - nmi_hwirq; -+ -+ if (offset_from_nmi < SUN6I_NR_DIRECT_IRQS) -+ assign_bit(offset_from_nmi, wake_irq_enabled, on); -+ else if (test_bit(data->hwirq, wake_mux_valid)) -+ assign_bit(data->hwirq, wake_mux_enabled, on); -+ else -+ /* Not wakeup capable. */ -+ return -EPERM; -+ -+ return 0; -+} -+ - static struct irq_chip sun6i_r_intc_nmi_chip = { - .name = "sun6i-r-intc", - .irq_ack = sun6i_r_intc_nmi_ack, -@@ -154,8 +180,19 @@ static struct irq_chip sun6i_r_intc_nmi_ - .irq_set_affinity = irq_chip_set_affinity_parent, - .irq_set_type = sun6i_r_intc_nmi_set_type, - .irq_set_irqchip_state = sun6i_r_intc_nmi_set_irqchip_state, -- .flags = IRQCHIP_SET_TYPE_MASKED | -- IRQCHIP_SKIP_SET_WAKE, -+ .irq_set_wake = sun6i_r_intc_irq_set_wake, -+ .flags = IRQCHIP_SET_TYPE_MASKED, -+}; -+ -+static struct irq_chip sun6i_r_intc_wakeup_chip = { -+ .name = "sun6i-r-intc", -+ .irq_mask = irq_chip_mask_parent, -+ .irq_unmask = irq_chip_unmask_parent, -+ .irq_eoi = irq_chip_eoi_parent, -+ .irq_set_affinity = irq_chip_set_affinity_parent, -+ .irq_set_type = irq_chip_set_type_parent, -+ .irq_set_wake = sun6i_r_intc_irq_set_wake, -+ .flags = IRQCHIP_SET_TYPE_MASKED, - }; - - static int sun6i_r_intc_domain_translate(struct irq_domain *domain, -@@ -215,8 +252,8 @@ static int sun6i_r_intc_domain_alloc(str - &sun6i_r_intc_nmi_chip, 0); - irq_set_handler(virq, handle_fasteoi_ack_irq); - } else { -- /* Only the NMI is currently supported. */ -- return -EINVAL; -+ irq_domain_set_hwirq_and_chip(domain, virq, hwirq, -+ &sun6i_r_intc_wakeup_chip, 0); - } - } - -@@ -229,6 +266,22 @@ static const struct irq_domain_ops sun6i - .free = irq_domain_free_irqs_common, - }; - -+static int sun6i_r_intc_suspend(void) -+{ -+ u32 buf[BITS_TO_U32(max(SUN6I_NR_TOP_LEVEL_IRQS, SUN6I_NR_MUX_BITS))]; -+ int i; -+ -+ /* Wake IRQs are enabled during system sleep and shutdown. */ -+ bitmap_to_arr32(buf, wake_irq_enabled, SUN6I_NR_TOP_LEVEL_IRQS); -+ for (i = 0; i < BITS_TO_U32(SUN6I_NR_TOP_LEVEL_IRQS); ++i) -+ writel_relaxed(buf[i], base + SUN6I_IRQ_ENABLE(i)); -+ bitmap_to_arr32(buf, wake_mux_enabled, SUN6I_NR_MUX_BITS); -+ for (i = 0; i < BITS_TO_U32(SUN6I_NR_MUX_BITS); ++i) -+ writel_relaxed(buf[i], base + SUN6I_MUX_ENABLE(i)); -+ -+ return 0; -+} -+ - static void sun6i_r_intc_resume(void) - { - int i; -@@ -239,8 +292,20 @@ static void sun6i_r_intc_resume(void) - writel_relaxed(0, base + SUN6I_IRQ_ENABLE(i)); - } - -+static void sun6i_r_intc_shutdown(void) -+{ -+ sun6i_r_intc_suspend(); -+} -+ -+static struct syscore_ops sun6i_r_intc_syscore_ops = { -+ .suspend = sun6i_r_intc_suspend, -+ .resume = sun6i_r_intc_resume, -+ .shutdown = sun6i_r_intc_shutdown, -+}; -+ - static int __init sun6i_r_intc_init(struct device_node *node, -- struct device_node *parent) -+ struct device_node *parent, -+ const struct sun6i_r_intc_variant *v) - { - struct irq_domain *domain, *parent_domain; - struct of_phandle_args nmi_parent; -@@ -256,6 +321,9 @@ static int __init sun6i_r_intc_init(stru - return -EINVAL; - nmi_hwirq = nmi_parent.args[1]; - -+ bitmap_set(wake_irq_enabled, v->first_mux_irq, v->nr_mux_irqs); -+ bitmap_from_arr32(wake_mux_valid, v->mux_valid, SUN6I_NR_MUX_BITS); -+ - parent_domain = irq_find_host(parent); - if (!parent_domain) { - pr_err("%pOF: Failed to obtain parent domain\n", node); -@@ -276,9 +344,36 @@ static int __init sun6i_r_intc_init(stru - return -ENOMEM; - } - -+ register_syscore_ops(&sun6i_r_intc_syscore_ops); -+ - sun6i_r_intc_ack_nmi(); - sun6i_r_intc_resume(); - - return 0; - } --IRQCHIP_DECLARE(sun6i_r_intc, "allwinner,sun6i-a31-r-intc", sun6i_r_intc_init); -+ -+static const struct sun6i_r_intc_variant sun6i_a31_r_intc_variant __initconst = { -+ .first_mux_irq = 19, -+ .nr_mux_irqs = 13, -+ .mux_valid = { 0xffffffff, 0xfff80000, 0xffffffff, 0x0000000f }, -+}; -+ -+static int __init sun6i_a31_r_intc_init(struct device_node *node, -+ struct device_node *parent) -+{ -+ return sun6i_r_intc_init(node, parent, &sun6i_a31_r_intc_variant); -+} -+IRQCHIP_DECLARE(sun6i_a31_r_intc, "allwinner,sun6i-a31-r-intc", sun6i_a31_r_intc_init); -+ -+static const struct sun6i_r_intc_variant sun50i_h6_r_intc_variant __initconst = { -+ .first_mux_irq = 21, -+ .nr_mux_irqs = 16, -+ .mux_valid = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff }, -+}; -+ -+static int __init sun50i_h6_r_intc_init(struct device_node *node, -+ struct device_node *parent) -+{ -+ return sun6i_r_intc_init(node, parent, &sun50i_h6_r_intc_variant); -+} -+IRQCHIP_DECLARE(sun50i_h6_r_intc, "allwinner,sun50i-h6-r-intc", sun50i_h6_r_intc_init); diff --git a/projects/Allwinner/patches/linux/crust/0018-ARM-dts-sunxi-Rename-nmi_intc-to-r_intc.patch b/projects/Allwinner/patches/linux/crust/0018-ARM-dts-sunxi-Rename-nmi_intc-to-r_intc.patch deleted file mode 100644 index 6c2476e745..0000000000 --- a/projects/Allwinner/patches/linux/crust/0018-ARM-dts-sunxi-Rename-nmi_intc-to-r_intc.patch +++ /dev/null @@ -1,194 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Fri, 25 Dec 2020 01:48:33 -0600 -Subject: [PATCH] ARM: dts: sunxi: Rename nmi_intc to r_intc - -The R_INTC block controls more than just the NMI, and it is a different -hardware block than the NMI INTC found in some other Allwinner SoCs, so -the label "nmi_intc" is inaccurate. Name it "r_intc" to match the -compatible and to match the few references in the vendor documentation. - -Signed-off-by: Samuel Holland ---- - arch/arm/boot/dts/sun6i-a31-hummingbird.dts | 2 +- - arch/arm/boot/dts/sun6i-a31-m9.dts | 2 +- - arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts | 2 +- - arch/arm/boot/dts/sun6i-a31.dtsi | 2 +- - arch/arm/boot/dts/sun6i-a31s-primo81.dts | 2 +- - arch/arm/boot/dts/sun6i-a31s-sina31s-core.dtsi | 2 +- - arch/arm/boot/dts/sun6i-a31s-sinovoip-bpi-m2.dts | 2 +- - arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts | 2 +- - arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi | 2 +- - arch/arm/boot/dts/sun8i-a23-a33.dtsi | 2 +- - arch/arm/boot/dts/sun8i-a33-olinuxino.dts | 2 +- - arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts | 2 +- - arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts | 2 +- - arch/arm/boot/dts/sun8i-r16-parrot.dts | 2 +- - arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi | 2 +- - 15 files changed, 15 insertions(+), 15 deletions(-) - ---- a/arch/arm/boot/dts/sun6i-a31-hummingbird.dts -+++ b/arch/arm/boot/dts/sun6i-a31-hummingbird.dts -@@ -226,7 +226,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - x-powers,drive-vbus-en; - }; ---- a/arch/arm/boot/dts/sun6i-a31-m9.dts -+++ b/arch/arm/boot/dts/sun6i-a31-m9.dts -@@ -115,7 +115,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - }; - }; ---- a/arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts -+++ b/arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts -@@ -115,7 +115,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - }; - }; ---- a/arch/arm/boot/dts/sun6i-a31.dtsi -+++ b/arch/arm/boot/dts/sun6i-a31.dtsi -@@ -1305,7 +1305,7 @@ - clock-output-names = "osc32k"; - }; - -- nmi_intc: interrupt-controller@1f00c00 { -+ r_intc: interrupt-controller@1f00c00 { - compatible = "allwinner,sun6i-a31-r-intc"; - interrupt-controller; - #interrupt-cells = <2>; ---- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts -@@ -159,7 +159,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - x-powers,drive-vbus-en; - }; ---- a/arch/arm/boot/dts/sun6i-a31s-sina31s-core.dtsi -+++ b/arch/arm/boot/dts/sun6i-a31s-sina31s-core.dtsi -@@ -78,7 +78,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - }; - }; ---- a/arch/arm/boot/dts/sun6i-a31s-sinovoip-bpi-m2.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-sinovoip-bpi-m2.dts -@@ -148,7 +148,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - eldoin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; ---- a/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -@@ -98,7 +98,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - }; - }; ---- a/arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi -+++ b/arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi -@@ -79,7 +79,7 @@ - axp22x: pmic@68 { - compatible = "x-powers,axp221"; - reg = <0x68>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - drivevbus-supply = <®_vcc5v0>; - x-powers,drive-vbus-en; ---- a/arch/arm/boot/dts/sun8i-a23-a33.dtsi -+++ b/arch/arm/boot/dts/sun8i-a23-a33.dtsi -@@ -716,7 +716,7 @@ - #clock-cells = <1>; - }; - -- nmi_intc: interrupt-controller@1f00c00 { -+ r_intc: interrupt-controller@1f00c00 { - compatible = "allwinner,sun6i-a31-r-intc"; - interrupt-controller; - #interrupt-cells = <2>; ---- a/arch/arm/boot/dts/sun8i-a33-olinuxino.dts -+++ b/arch/arm/boot/dts/sun8i-a33-olinuxino.dts -@@ -98,7 +98,7 @@ - axp22x: pmic@3a3 { - compatible = "x-powers,axp223"; - reg = <0x3a3>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - eldoin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; ---- a/arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts -+++ b/arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts -@@ -164,7 +164,7 @@ - axp22x: pmic@3a3 { - compatible = "x-powers,axp223"; - reg = <0x3a3>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - eldoin-supply = <®_dcdc1>; - }; ---- a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts -+++ b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts -@@ -163,7 +163,7 @@ - axp22x: pmic@3a3 { - compatible = "x-powers,axp223"; - reg = <0x3a3>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - eldoin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; ---- a/arch/arm/boot/dts/sun8i-r16-parrot.dts -+++ b/arch/arm/boot/dts/sun8i-r16-parrot.dts -@@ -164,7 +164,7 @@ - axp22x: pmic@3a3 { - compatible = "x-powers,axp223"; - reg = <0x3a3>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - drivevbus-supply = <®_vcc5v0>; - x-powers,drive-vbus-en; ---- a/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi -+++ b/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi -@@ -92,7 +92,7 @@ - axp22x: pmic@3a3 { - compatible = "x-powers,axp223"; - reg = <0x3a3>; -- interrupt-parent = <&nmi_intc>; -+ interrupt-parent = <&r_intc>; - interrupts = <0 IRQ_TYPE_LEVEL_LOW>; - eldoin-supply = <®_dcdc1>; - drivevbus-supply = <®_vcc5v0>; diff --git a/projects/Allwinner/patches/linux/crust/0019-ARM-dts-sunxi-Use-the-new-r_intc-binding.patch b/projects/Allwinner/patches/linux/crust/0019-ARM-dts-sunxi-Use-the-new-r_intc-binding.patch deleted file mode 100644 index 2be8778578..0000000000 --- a/projects/Allwinner/patches/linux/crust/0019-ARM-dts-sunxi-Use-the-new-r_intc-binding.patch +++ /dev/null @@ -1,291 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Fri, 25 Dec 2020 01:49:51 -0600 -Subject: [PATCH] ARM: dts: sunxi: Use the new r_intc binding - -The binding of R_INTC was updated to allow specifying interrupts other -than the external NMI, since routing those interrupts through the R_INTC -driver allows using them for wakeup. - -Update the device trees to use the new binding. - -Signed-off-by: Samuel Holland ---- - arch/arm/boot/dts/sun6i-a31-hummingbird.dts | 2 +- - arch/arm/boot/dts/sun6i-a31-m9.dts | 2 +- - arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts | 2 +- - arch/arm/boot/dts/sun6i-a31.dtsi | 2 +- - arch/arm/boot/dts/sun6i-a31s-primo81.dts | 2 +- - arch/arm/boot/dts/sun6i-a31s-sina31s-core.dtsi | 2 +- - arch/arm/boot/dts/sun6i-a31s-sinovoip-bpi-m2.dts | 2 +- - arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts | 2 +- - arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi | 2 +- - arch/arm/boot/dts/sun8i-a23-a33.dtsi | 2 +- - arch/arm/boot/dts/sun8i-a33-olinuxino.dts | 2 +- - arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts | 2 +- - arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts | 4 ++-- - arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts | 4 ++-- - arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts | 4 ++-- - arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts | 4 ++-- - arch/arm/boot/dts/sun8i-a83t.dtsi | 2 +- - arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts | 2 +- - arch/arm/boot/dts/sun8i-r16-parrot.dts | 2 +- - arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi | 2 +- - 20 files changed, 24 insertions(+), 24 deletions(-) - ---- a/arch/arm/boot/dts/sun6i-a31-hummingbird.dts -+++ b/arch/arm/boot/dts/sun6i-a31-hummingbird.dts -@@ -227,7 +227,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - x-powers,drive-vbus-en; - }; - }; ---- a/arch/arm/boot/dts/sun6i-a31-m9.dts -+++ b/arch/arm/boot/dts/sun6i-a31-m9.dts -@@ -116,7 +116,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts -+++ b/arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts -@@ -116,7 +116,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm/boot/dts/sun6i-a31.dtsi -+++ b/arch/arm/boot/dts/sun6i-a31.dtsi -@@ -1308,7 +1308,7 @@ - r_intc: interrupt-controller@1f00c00 { - compatible = "allwinner,sun6i-a31-r-intc"; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - reg = <0x01f00c00 0x400>; - interrupts = ; - }; ---- a/arch/arm/boot/dts/sun6i-a31s-primo81.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-primo81.dts -@@ -160,7 +160,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - x-powers,drive-vbus-en; - }; - }; ---- a/arch/arm/boot/dts/sun6i-a31s-sina31s-core.dtsi -+++ b/arch/arm/boot/dts/sun6i-a31s-sina31s-core.dtsi -@@ -79,7 +79,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm/boot/dts/sun6i-a31s-sinovoip-bpi-m2.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-sinovoip-bpi-m2.dts -@@ -149,7 +149,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; - }; ---- a/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -+++ b/arch/arm/boot/dts/sun6i-a31s-yones-toptech-bs1078-v2.dts -@@ -99,7 +99,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi -+++ b/arch/arm/boot/dts/sun6i-reference-design-tablet.dtsi -@@ -80,7 +80,7 @@ - compatible = "x-powers,axp221"; - reg = <0x68>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - drivevbus-supply = <®_vcc5v0>; - x-powers,drive-vbus-en; - }; ---- a/arch/arm/boot/dts/sun8i-a23-a33.dtsi -+++ b/arch/arm/boot/dts/sun8i-a23-a33.dtsi -@@ -719,7 +719,7 @@ - r_intc: interrupt-controller@1f00c00 { - compatible = "allwinner,sun6i-a31-r-intc"; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - reg = <0x01f00c00 0x400>; - interrupts = ; - }; ---- a/arch/arm/boot/dts/sun8i-a33-olinuxino.dts -+++ b/arch/arm/boot/dts/sun8i-a33-olinuxino.dts -@@ -99,7 +99,7 @@ - compatible = "x-powers,axp223"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; - }; ---- a/arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts -+++ b/arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts -@@ -165,7 +165,7 @@ - compatible = "x-powers,axp223"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - }; - }; ---- a/arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts -+++ b/arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts -@@ -122,7 +122,7 @@ - compatible = "x-powers,axp818", "x-powers,axp813"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - swin-supply = <®_dcdc1>; - }; -@@ -142,7 +142,7 @@ - ac100_rtc: rtc { - compatible = "x-powers,ac100-rtc"; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - clocks = <&ac100_codec>; - #clock-cells = <1>; - clock-output-names = "cko1_rtc", ---- a/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts -+++ b/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts -@@ -203,7 +203,7 @@ - compatible = "x-powers,axp813"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - fldoin-supply = <®_dcdc5>; - swin-supply = <®_dcdc1>; -@@ -225,7 +225,7 @@ - ac100_rtc: rtc { - compatible = "x-powers,ac100-rtc"; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - clocks = <&ac100_codec>; - #clock-cells = <1>; - clock-output-names = "cko1_rtc", ---- a/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts -+++ b/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts -@@ -239,7 +239,7 @@ - compatible = "x-powers,axp818", "x-powers,axp813"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - swin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; -@@ -260,7 +260,7 @@ - ac100_rtc: rtc { - compatible = "x-powers,ac100-rtc"; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - clocks = <&ac100_codec>; - #clock-cells = <1>; - clock-output-names = "cko1_rtc", ---- a/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts -+++ b/arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts -@@ -263,7 +263,7 @@ - compatible = "x-powers,axp813"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - swin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; - }; -@@ -283,7 +283,7 @@ - ac100_rtc: rtc { - compatible = "x-powers,ac100-rtc"; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - clocks = <&ac100_codec>; - #clock-cells = <1>; - clock-output-names = "cko1_rtc", ---- a/arch/arm/boot/dts/sun8i-a83t.dtsi -+++ b/arch/arm/boot/dts/sun8i-a83t.dtsi -@@ -1114,7 +1114,7 @@ - compatible = "allwinner,sun8i-a83t-r-intc", - "allwinner,sun6i-a31-r-intc"; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - reg = <0x01f00c00 0x400>; - interrupts = ; - }; ---- a/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts -+++ b/arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts -@@ -164,7 +164,7 @@ - compatible = "x-powers,axp223"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - x-powers,drive-vbus-en; - }; ---- a/arch/arm/boot/dts/sun8i-r16-parrot.dts -+++ b/arch/arm/boot/dts/sun8i-r16-parrot.dts -@@ -165,7 +165,7 @@ - compatible = "x-powers,axp223"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - drivevbus-supply = <®_vcc5v0>; - x-powers,drive-vbus-en; - }; ---- a/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi -+++ b/arch/arm/boot/dts/sun8i-reference-design-tablet.dtsi -@@ -93,7 +93,7 @@ - compatible = "x-powers,axp223"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - eldoin-supply = <®_dcdc1>; - drivevbus-supply = <®_vcc5v0>; - x-powers,drive-vbus-en; diff --git a/projects/Allwinner/patches/linux/crust/0020-ARM-dts-sunxi-h3-h5-Add-r_intc-node.patch b/projects/Allwinner/patches/linux/crust/0020-ARM-dts-sunxi-h3-h5-Add-r_intc-node.patch deleted file mode 100644 index 992b4afc9c..0000000000 --- a/projects/Allwinner/patches/linux/crust/0020-ARM-dts-sunxi-h3-h5-Add-r_intc-node.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Sun, 12 Jan 2020 20:27:08 -0600 -Subject: [PATCH] ARM: dts: sunxi: h3/h5: Add r_intc node - -The H3 and H5 SoCs have an additional interrupt controller in the RTC -power domain that can be used to enable wakeup for certain IRQs. - -Add a node for it. - -Signed-off-by: Samuel Holland ---- - arch/arm/boot/dts/sunxi-h3-h5.dtsi | 9 +++++++++ - 1 file changed, 9 insertions(+) - ---- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi -+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -@@ -877,6 +877,15 @@ - #clock-cells = <1>; - }; - -+ r_intc: interrupt-controller@1f00c00 { -+ compatible = "allwinner,sun8i-h3-r-intc", -+ "allwinner,sun6i-a31-r-intc"; -+ interrupt-controller; -+ #interrupt-cells = <3>; -+ reg = <0x01f00c00 0x400>; -+ interrupts = ; -+ }; -+ - r_ccu: clock@1f01400 { - compatible = "allwinner,sun8i-h3-r-ccu"; - reg = <0x01f01400 0x100>; diff --git a/projects/Allwinner/patches/linux/crust/0021-ARM-dts-sunxi-Move-wakeup-capable-IRQs-to-r_intc.patch b/projects/Allwinner/patches/linux/crust/0021-ARM-dts-sunxi-Move-wakeup-capable-IRQs-to-r_intc.patch deleted file mode 100644 index e92d678821..0000000000 --- a/projects/Allwinner/patches/linux/crust/0021-ARM-dts-sunxi-Move-wakeup-capable-IRQs-to-r_intc.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Fri, 25 Dec 2020 02:05:58 -0600 -Subject: [PATCH] ARM: dts: sunxi: Move wakeup-capable IRQs to r_intc - -All IRQs that can be used to wake up the system must be routed through -r_intc, so they are visible to firmware while the system is suspended. - -In addition to the external NMI input, which is already routed through -r_intc, these include PIO and R_PIO (gpio-keys), the LRADC, and the RTC. - -Signed-off-by: Samuel Holland ---- - arch/arm/boot/dts/sun6i-a31.dtsi | 4 ++++ - arch/arm/boot/dts/sun8i-a23-a33.dtsi | 4 ++++ - arch/arm/boot/dts/sun8i-a83t.dtsi | 3 +++ - arch/arm/boot/dts/sunxi-h3-h5.dtsi | 3 +++ - 4 files changed, 14 insertions(+) - ---- a/arch/arm/boot/dts/sun6i-a31.dtsi -+++ b/arch/arm/boot/dts/sun6i-a31.dtsi -@@ -611,6 +611,7 @@ - pio: pinctrl@1c20800 { - compatible = "allwinner,sun6i-a31-pinctrl"; - reg = <0x01c20800 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - , - , -@@ -802,6 +803,7 @@ - lradc: lradc@1c22800 { - compatible = "allwinner,sun4i-a10-lradc-keys"; - reg = <0x01c22800 0x100>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - status = "disabled"; - }; -@@ -1299,6 +1301,7 @@ - #clock-cells = <1>; - compatible = "allwinner,sun6i-a31-rtc"; - reg = <0x01f00000 0x54>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clocks = <&osc32k>; -@@ -1383,6 +1386,7 @@ - r_pio: pinctrl@1f02c00 { - compatible = "allwinner,sun6i-a31-r-pinctrl"; - reg = <0x01f02c00 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clocks = <&apb0_gates 0>, <&osc24M>, <&rtc 0>; ---- a/arch/arm/boot/dts/sun8i-a23-a33.dtsi -+++ b/arch/arm/boot/dts/sun8i-a23-a33.dtsi -@@ -338,6 +338,7 @@ - pio: pinctrl@1c20800 { - /* compatible gets set in SoC specific dtsi file */ - reg = <0x01c20800 0x400>; -+ interrupt-parent = <&r_intc>; - /* interrupts get set in SoC specific dtsi file */ - clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>; - clock-names = "apb", "hosc", "losc"; -@@ -473,6 +474,7 @@ - lradc: lradc@1c22800 { - compatible = "allwinner,sun4i-a10-lradc-keys"; - reg = <0x01c22800 0x100>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - status = "disabled"; - }; -@@ -709,6 +711,7 @@ - rtc: rtc@1f00000 { - compatible = "allwinner,sun8i-a23-rtc"; - reg = <0x01f00000 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clock-output-names = "osc32k", "osc32k-out"; -@@ -805,6 +808,7 @@ - r_pio: pinctrl@1f02c00 { - compatible = "allwinner,sun8i-a23-r-pinctrl"; - reg = <0x01f02c00 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - clocks = <&apb0_gates 0>, <&osc24M>, <&rtc 0>; - clock-names = "apb", "hosc", "losc"; ---- a/arch/arm/boot/dts/sun8i-a83t.dtsi -+++ b/arch/arm/boot/dts/sun8i-a83t.dtsi -@@ -708,6 +708,7 @@ - - pio: pinctrl@1c20800 { - compatible = "allwinner,sun8i-a83t-pinctrl"; -+ interrupt-parent = <&r_intc>; - interrupts = , - , - ; -@@ -1150,6 +1151,7 @@ - r_lradc: lradc@1f03c00 { - compatible = "allwinner,sun8i-a83t-r-lradc"; - reg = <0x01f03c00 0x100>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - status = "disabled"; - }; -@@ -1157,6 +1159,7 @@ - r_pio: pinctrl@1f02c00 { - compatible = "allwinner,sun8i-a83t-r-pinctrl"; - reg = <0x01f02c00 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - clocks = <&r_ccu CLK_APB0_PIO>, <&osc24M>, - <&osc16Md512>; ---- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi -+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi -@@ -413,6 +413,7 @@ - pio: pinctrl@1c20800 { - /* compatible is in per SoC .dtsi file */ - reg = <0x01c20800 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&rtc 0>; -@@ -870,6 +871,7 @@ - rtc: rtc@1f00000 { - /* compatible is in per SoC .dtsi file */ - reg = <0x01f00000 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clock-output-names = "osc32k", "osc32k-out", "iosc"; -@@ -927,6 +929,7 @@ - r_pio: pinctrl@1f02c00 { - compatible = "allwinner,sun8i-h3-r-pinctrl"; - reg = <0x01f02c00 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - clocks = <&r_ccu CLK_APB0_PIO>, <&osc24M>, <&rtc 0>; - clock-names = "apb", "hosc", "losc"; diff --git a/projects/Allwinner/patches/linux/crust/0022-arm64-dts-allwinner-Use-the-new-r_intc-binding.patch b/projects/Allwinner/patches/linux/crust/0022-arm64-dts-allwinner-Use-the-new-r_intc-binding.patch deleted file mode 100644 index 1ca5474ccc..0000000000 --- a/projects/Allwinner/patches/linux/crust/0022-arm64-dts-allwinner-Use-the-new-r_intc-binding.patch +++ /dev/null @@ -1,232 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Fri, 25 Dec 2020 01:56:58 -0600 -Subject: [PATCH] arm64: dts: allwinner: Use the new r_intc binding - -The binding of R_INTC was updated to allow specifying interrupts other -than the external NMI, since routing those interrupts through the R_INTC -driver allows using them for wakeup. - -Update the device trees to use the new binding. - -Signed-off-by: Samuel Holland ---- - arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi | 2 +- - arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts | 4 ++-- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 5 ++--- - 17 files changed, 19 insertions(+), 20 deletions(-) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-amarula-relic.dts -@@ -173,7 +173,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ - }; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts -@@ -191,7 +191,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ - }; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts -@@ -152,7 +152,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts -@@ -185,7 +185,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ - }; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -@@ -192,7 +192,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ - }; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts -@@ -139,7 +139,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts -@@ -248,7 +248,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi -@@ -245,7 +245,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinetab.dts -@@ -266,7 +266,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - x-powers,drive-vbus-en; - }; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi -@@ -46,7 +46,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - }; - }; - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-teres-i.dts -@@ -205,7 +205,7 @@ - compatible = "x-powers,axp803"; - reg = <0x3a3>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - wakeup-source; - }; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -@@ -1215,7 +1215,7 @@ - compatible = "allwinner,sun50i-a64-r-intc", - "allwinner,sun6i-a31-r-intc"; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - reg = <0x01f00c00 0x400>; - interrupts = ; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-beelink-gs1.dts -@@ -157,7 +157,7 @@ - compatible = "x-powers,axp805", "x-powers,axp806"; - reg = <0x36>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - interrupt-controller; - #interrupt-cells = <1>; - x-powers,self-working-mode; ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-3.dts -@@ -182,7 +182,7 @@ - compatible = "x-powers,axp805", "x-powers,axp806"; - reg = <0x36>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - interrupt-controller; - #interrupt-cells = <1>; - x-powers,self-working-mode; ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi.dtsi -@@ -119,7 +119,7 @@ - compatible = "x-powers,axp805", "x-powers,axp806"; - reg = <0x36>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - interrupt-controller; - #interrupt-cells = <1>; - x-powers,self-working-mode; ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts -@@ -167,7 +167,7 @@ - compatible = "x-powers,axp805", "x-powers,axp806"; - reg = <0x36>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - interrupt-controller; - #interrupt-cells = <1>; - x-powers,self-working-mode; -@@ -280,7 +280,7 @@ - compatible = "nxp,pcf8563"; - reg = <0x51>; - interrupt-parent = <&r_intc>; -- interrupts = <0 IRQ_TYPE_LEVEL_LOW>; -+ interrupts = ; - #clock-cells = <0>; - }; - }; ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -931,10 +931,9 @@ - }; - - r_intc: interrupt-controller@7021000 { -- compatible = "allwinner,sun50i-h6-r-intc", -- "allwinner,sun6i-a31-r-intc"; -+ compatible = "allwinner,sun50i-h6-r-intc"; - interrupt-controller; -- #interrupt-cells = <2>; -+ #interrupt-cells = <3>; - reg = <0x07021000 0x400>; - interrupts = ; - }; diff --git a/projects/Allwinner/patches/linux/crust/0023-arm64-dts-allwinner-Move-wakeup-capable-IRQs-to-r_in.patch b/projects/Allwinner/patches/linux/crust/0023-arm64-dts-allwinner-Move-wakeup-capable-IRQs-to-r_in.patch deleted file mode 100644 index a889e893b8..0000000000 --- a/projects/Allwinner/patches/linux/crust/0023-arm64-dts-allwinner-Move-wakeup-capable-IRQs-to-r_in.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Fri, 25 Dec 2020 02:05:58 -0600 -Subject: [PATCH] arm64: dts: allwinner: Move wakeup-capable IRQs to r_intc - -All IRQs that can be used to wake up the system must be routed through -r_intc, so they are visible to firmware while the system is suspended. - -In addition to the external NMI input, which is already routed through -r_intc, these include PIO and R_PIO (gpio-keys), the LRADC, and the RTC. - -Signed-off-by: Samuel Holland ---- - arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 4 ++++ - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 3 +++ - 2 files changed, 7 insertions(+) - ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi -@@ -644,6 +644,7 @@ - pio: pinctrl@1c20800 { - compatible = "allwinner,sun50i-a64-pinctrl"; - reg = <0x01c20800 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - , - ; -@@ -814,6 +815,7 @@ - compatible = "allwinner,sun50i-a64-lradc", - "allwinner,sun8i-a83t-r-lradc"; - reg = <0x01c21800 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - status = "disabled"; - }; -@@ -1204,6 +1206,7 @@ - compatible = "allwinner,sun50i-a64-rtc", - "allwinner,sun8i-h3-rtc"; - reg = <0x01f00000 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clock-output-names = "osc32k", "osc32k-out", "iosc"; -@@ -1275,6 +1278,7 @@ - r_pio: pinctrl@1f02c00 { - compatible = "allwinner,sun50i-a64-r-pinctrl"; - reg = <0x01f02c00 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = ; - clocks = <&r_ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>; - clock-names = "apb", "hosc", "losc"; ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -305,6 +305,7 @@ - pio: pinctrl@300b000 { - compatible = "allwinner,sun50i-h6-pinctrl"; - reg = <0x0300b000 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - , - , -@@ -906,6 +907,7 @@ - rtc: rtc@7000000 { - compatible = "allwinner,sun50i-h6-rtc"; - reg = <0x07000000 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clock-output-names = "osc32k", "osc32k-out", "iosc"; -@@ -941,6 +943,7 @@ - r_pio: pinctrl@7022000 { - compatible = "allwinner,sun50i-h6-r-pinctrl"; - reg = <0x07022000 0x400>; -+ interrupt-parent = <&r_intc>; - interrupts = , - ; - clocks = <&r_ccu CLK_R_APB1>, <&osc24M>, <&rtc 0>; diff --git a/projects/Allwinner/patches/linux/crust/0026-DO-NOT-MERGE-ARM-dts-sunxi-a83t-Protect-SCP-clocks.patch b/projects/Allwinner/patches/linux/crust/0026-DO-NOT-MERGE-ARM-dts-sunxi-a83t-Protect-SCP-clocks.patch deleted file mode 100644 index 0ed0dcaac0..0000000000 --- a/projects/Allwinner/patches/linux/crust/0026-DO-NOT-MERGE-ARM-dts-sunxi-a83t-Protect-SCP-clocks.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Wed, 1 Jan 2020 16:03:34 -0600 -Subject: [PATCH] [DO NOT MERGE] ARM: dts: sunxi: a83t: Protect SCP clocks - -Signed-off-by: Samuel Holland ---- - arch/arm/boot/dts/sun8i-a83t.dtsi | 2 ++ - 1 file changed, 2 insertions(+) - ---- a/arch/arm/boot/dts/sun8i-a83t.dtsi -+++ b/arch/arm/boot/dts/sun8i-a83t.dtsi -@@ -702,6 +702,7 @@ - reg = <0x01c20000 0x400>; - clocks = <&osc24M>, <&osc16Md512>; - clock-names = "hosc", "losc"; -+ protected-clocks = ; - #clock-cells = <1>; - #reset-cells = <1>; - }; -@@ -1126,6 +1127,7 @@ - clocks = <&osc24M>, <&osc16Md512>, <&osc16M>, - <&ccu CLK_PLL_PERIPH>; - clock-names = "hosc", "losc", "iosc", "pll-periph"; -+ protected-clocks = ; - #clock-cells = <1>; - #reset-cells = <1>; - }; diff --git a/projects/Allwinner/patches/linux/crust/0030-bus-sunxi-rsb-Move-OF-match-table.patch b/projects/Allwinner/patches/linux/crust/0030-bus-sunxi-rsb-Move-OF-match-table.patch deleted file mode 100644 index 0a933a1bc8..0000000000 --- a/projects/Allwinner/patches/linux/crust/0030-bus-sunxi-rsb-Move-OF-match-table.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Mon, 30 Dec 2019 17:12:42 -0600 -Subject: [PATCH] bus: sunxi-rsb: Move OF match table - -For some reason, this driver's OF match table was placed above the -probe/remove functions, far away from the platform_driver definition. -Adding device PM ops would move the table even farther away. Let's move -it to the usual place, right before the platform_driver. - -Signed-off-by: Samuel Holland ---- - drivers/bus/sunxi-rsb.c | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - ---- a/drivers/bus/sunxi-rsb.c -+++ b/drivers/bus/sunxi-rsb.c -@@ -614,12 +614,6 @@ static int of_rsb_register_devices(struc - return 0; - } - --static const struct of_device_id sunxi_rsb_of_match_table[] = { -- { .compatible = "allwinner,sun8i-a23-rsb" }, -- {} --}; --MODULE_DEVICE_TABLE(of, sunxi_rsb_of_match_table); -- - static int sunxi_rsb_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -@@ -747,6 +741,12 @@ static int sunxi_rsb_remove(struct platf - return 0; - } - -+static const struct of_device_id sunxi_rsb_of_match_table[] = { -+ { .compatible = "allwinner,sun8i-a23-rsb" }, -+ {} -+}; -+MODULE_DEVICE_TABLE(of, sunxi_rsb_of_match_table); -+ - static struct platform_driver sunxi_rsb_driver = { - .probe = sunxi_rsb_probe, - .remove = sunxi_rsb_remove, diff --git a/projects/Allwinner/patches/linux/crust/0031-bus-sunxi-rsb-Split-out-controller-init-exit-functio.patch b/projects/Allwinner/patches/linux/crust/0031-bus-sunxi-rsb-Split-out-controller-init-exit-functio.patch deleted file mode 100644 index 8249d68a94..0000000000 --- a/projects/Allwinner/patches/linux/crust/0031-bus-sunxi-rsb-Split-out-controller-init-exit-functio.patch +++ /dev/null @@ -1,210 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Mon, 30 Dec 2019 22:36:04 -0600 -Subject: [PATCH] bus: sunxi-rsb: Split out controller init/exit functions - -This separates the resource acquisition from the hardware initialization -phase, so the hardware initialization can be repeated after system -suspend/resume. The same is done for the exit/remove function, except -that there is no resource deallocation phase due to the use of devres. - -The requested RSB clock frequency is stored in `struct sunxi_rsb` so it -will be available when reinitializing the hardware. - -Signed-off-by: Samuel Holland ---- - drivers/bus/sunxi-rsb.c | 127 ++++++++++++++++++++++------------------ - 1 file changed, 71 insertions(+), 56 deletions(-) - ---- a/drivers/bus/sunxi-rsb.c -+++ b/drivers/bus/sunxi-rsb.c -@@ -126,6 +126,7 @@ struct sunxi_rsb { - struct completion complete; - struct mutex lock; - unsigned int status; -+ u32 clk_freq; - }; - - /* bus / slave device related functions */ -@@ -614,16 +615,74 @@ static int of_rsb_register_devices(struc - return 0; - } - -+static int sunxi_rsb_hw_init(struct sunxi_rsb *rsb) -+{ -+ struct device *dev = rsb->dev; -+ unsigned long p_clk_freq; -+ u32 clk_delay, reg; -+ int clk_div, ret; -+ -+ ret = clk_prepare_enable(rsb->clk); -+ if (ret) { -+ dev_err(dev, "failed to enable clk: %d\n", ret); -+ return ret; -+ } -+ -+ ret = reset_control_deassert(rsb->rstc); -+ if (ret) { -+ dev_err(dev, "failed to deassert reset line: %d\n", ret); -+ goto err_clk_disable; -+ } -+ -+ /* reset the controller */ -+ writel(RSB_CTRL_SOFT_RST, rsb->regs + RSB_CTRL); -+ readl_poll_timeout(rsb->regs + RSB_CTRL, reg, -+ !(reg & RSB_CTRL_SOFT_RST), 1000, 100000); -+ -+ /* -+ * Clock frequency and delay calculation code is from -+ * Allwinner U-boot sources. -+ * -+ * From A83 user manual: -+ * bus clock frequency = parent clock frequency / (2 * (divider + 1)) -+ */ -+ p_clk_freq = clk_get_rate(rsb->clk); -+ clk_div = p_clk_freq / rsb->clk_freq / 2; -+ if (!clk_div) -+ clk_div = 1; -+ else if (clk_div > RSB_CCR_MAX_CLK_DIV + 1) -+ clk_div = RSB_CCR_MAX_CLK_DIV + 1; -+ -+ clk_delay = clk_div >> 1; -+ if (!clk_delay) -+ clk_delay = 1; -+ -+ dev_info(dev, "RSB running at %lu Hz\n", p_clk_freq / clk_div / 2); -+ writel(RSB_CCR_SDA_OUT_DELAY(clk_delay) | RSB_CCR_CLK_DIV(clk_div - 1), -+ rsb->regs + RSB_CCR); -+ -+ return 0; -+ -+err_clk_disable: -+ clk_disable_unprepare(rsb->clk); -+ -+ return ret; -+} -+ -+static void sunxi_rsb_hw_exit(struct sunxi_rsb *rsb) -+{ -+ reset_control_assert(rsb->rstc); -+ clk_disable_unprepare(rsb->clk); -+} -+ - static int sunxi_rsb_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; - struct device_node *np = dev->of_node; - struct resource *r; - struct sunxi_rsb *rsb; -- unsigned long p_clk_freq; -- u32 clk_delay, clk_freq = 3000000; -- int clk_div, irq, ret; -- u32 reg; -+ u32 clk_freq = 3000000; -+ int irq, ret; - - of_property_read_u32(np, "clock-frequency", &clk_freq); - if (clk_freq > RSB_MAX_FREQ) { -@@ -638,6 +697,7 @@ static int sunxi_rsb_probe(struct platfo - return -ENOMEM; - - rsb->dev = dev; -+ rsb->clk_freq = clk_freq; - platform_set_drvdata(pdev, rsb); - r = platform_get_resource(pdev, IORESOURCE_MEM, 0); - rsb->regs = devm_ioremap_resource(dev, r); -@@ -655,63 +715,27 @@ static int sunxi_rsb_probe(struct platfo - return ret; - } - -- ret = clk_prepare_enable(rsb->clk); -- if (ret) { -- dev_err(dev, "failed to enable clk: %d\n", ret); -- return ret; -- } -- -- p_clk_freq = clk_get_rate(rsb->clk); -- - rsb->rstc = devm_reset_control_get(dev, NULL); - if (IS_ERR(rsb->rstc)) { - ret = PTR_ERR(rsb->rstc); - dev_err(dev, "failed to retrieve reset controller: %d\n", ret); -- goto err_clk_disable; -- } -- -- ret = reset_control_deassert(rsb->rstc); -- if (ret) { -- dev_err(dev, "failed to deassert reset line: %d\n", ret); -- goto err_clk_disable; -+ return ret; - } - - init_completion(&rsb->complete); - mutex_init(&rsb->lock); - -- /* reset the controller */ -- writel(RSB_CTRL_SOFT_RST, rsb->regs + RSB_CTRL); -- readl_poll_timeout(rsb->regs + RSB_CTRL, reg, -- !(reg & RSB_CTRL_SOFT_RST), 1000, 100000); -- -- /* -- * Clock frequency and delay calculation code is from -- * Allwinner U-boot sources. -- * -- * From A83 user manual: -- * bus clock frequency = parent clock frequency / (2 * (divider + 1)) -- */ -- clk_div = p_clk_freq / clk_freq / 2; -- if (!clk_div) -- clk_div = 1; -- else if (clk_div > RSB_CCR_MAX_CLK_DIV + 1) -- clk_div = RSB_CCR_MAX_CLK_DIV + 1; -- -- clk_delay = clk_div >> 1; -- if (!clk_delay) -- clk_delay = 1; -- -- dev_info(dev, "RSB running at %lu Hz\n", p_clk_freq / clk_div / 2); -- writel(RSB_CCR_SDA_OUT_DELAY(clk_delay) | RSB_CCR_CLK_DIV(clk_div - 1), -- rsb->regs + RSB_CCR); -- - ret = devm_request_irq(dev, irq, sunxi_rsb_irq, 0, RSB_CTRL_NAME, rsb); - if (ret) { - dev_err(dev, "can't register interrupt handler irq %d: %d\n", - irq, ret); -- goto err_reset_assert; -+ return ret; - } - -+ ret = sunxi_rsb_hw_init(rsb); -+ if (ret) -+ return ret; -+ - /* initialize all devices on the bus into RSB mode */ - ret = sunxi_rsb_init_device_mode(rsb); - if (ret) -@@ -720,14 +744,6 @@ static int sunxi_rsb_probe(struct platfo - of_rsb_register_devices(rsb); - - return 0; -- --err_reset_assert: -- reset_control_assert(rsb->rstc); -- --err_clk_disable: -- clk_disable_unprepare(rsb->clk); -- -- return ret; - } - - static int sunxi_rsb_remove(struct platform_device *pdev) -@@ -735,8 +751,7 @@ static int sunxi_rsb_remove(struct platf - struct sunxi_rsb *rsb = platform_get_drvdata(pdev); - - device_for_each_child(rsb->dev, NULL, sunxi_rsb_remove_devices); -- reset_control_assert(rsb->rstc); -- clk_disable_unprepare(rsb->clk); -+ sunxi_rsb_hw_exit(rsb); - - return 0; - } diff --git a/projects/Allwinner/patches/linux/crust/0032-bus-sunxi-rsb-Implement-suspend-resume-shutdown-call.patch b/projects/Allwinner/patches/linux/crust/0032-bus-sunxi-rsb-Implement-suspend-resume-shutdown-call.patch deleted file mode 100644 index 30546622a4..0000000000 --- a/projects/Allwinner/patches/linux/crust/0032-bus-sunxi-rsb-Implement-suspend-resume-shutdown-call.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Mon, 30 Dec 2019 22:50:02 -0600 -Subject: [PATCH] bus: sunxi-rsb: Implement suspend/resume/shutdown callbacks - -Since system firmware is likely to use the RSB bus to communicate with a -PMIC while the system is suspended, we cannot make any assumptions about -the controller state after resuming. Thus it is important to completely -reinitialize the controller. - -The RSB bus needs to be ready as soon as IRQs are enabled, to handle -wakeup event IRQs coming from the PMIC. Thus it uses NOIRQ callbacks. - -Signed-off-by: Samuel Holland ---- - drivers/bus/sunxi-rsb.c | 30 ++++++++++++++++++++++++++++++ - 1 file changed, 30 insertions(+) - ---- a/drivers/bus/sunxi-rsb.c -+++ b/drivers/bus/sunxi-rsb.c -@@ -45,6 +45,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -675,6 +676,22 @@ static void sunxi_rsb_hw_exit(struct sun - clk_disable_unprepare(rsb->clk); - } - -+static int __maybe_unused sunxi_rsb_suspend(struct device *dev) -+{ -+ struct sunxi_rsb *rsb = dev_get_drvdata(dev); -+ -+ sunxi_rsb_hw_exit(rsb); -+ -+ return 0; -+} -+ -+static int __maybe_unused sunxi_rsb_resume(struct device *dev) -+{ -+ struct sunxi_rsb *rsb = dev_get_drvdata(dev); -+ -+ return sunxi_rsb_hw_init(rsb); -+} -+ - static int sunxi_rsb_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -@@ -756,6 +773,17 @@ static int sunxi_rsb_remove(struct platf - return 0; - } - -+static void sunxi_rsb_shutdown(struct platform_device *pdev) -+{ -+ struct sunxi_rsb *rsb = platform_get_drvdata(pdev); -+ -+ sunxi_rsb_hw_exit(rsb); -+} -+ -+static const struct dev_pm_ops sunxi_rsb_dev_pm_ops = { -+ SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sunxi_rsb_suspend, sunxi_rsb_resume) -+}; -+ - static const struct of_device_id sunxi_rsb_of_match_table[] = { - { .compatible = "allwinner,sun8i-a23-rsb" }, - {} -@@ -765,9 +793,11 @@ MODULE_DEVICE_TABLE(of, sunxi_rsb_of_mat - static struct platform_driver sunxi_rsb_driver = { - .probe = sunxi_rsb_probe, - .remove = sunxi_rsb_remove, -+ .shutdown = sunxi_rsb_shutdown, - .driver = { - .name = RSB_CTRL_NAME, - .of_match_table = sunxi_rsb_of_match_table, -+ .pm = &sunxi_rsb_dev_pm_ops, - }, - }; - diff --git a/projects/Allwinner/patches/linux/crust/0033-bus-sunxi-rsb-Implement-runtime-power-management.patch b/projects/Allwinner/patches/linux/crust/0033-bus-sunxi-rsb-Implement-runtime-power-management.patch deleted file mode 100644 index 44e9faad68..0000000000 --- a/projects/Allwinner/patches/linux/crust/0033-bus-sunxi-rsb-Implement-runtime-power-management.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Samuel Holland -Date: Wed, 1 Jan 2020 00:10:40 -0600 -Subject: [PATCH] bus: sunxi-rsb: Implement runtime power management - -Gate the clock to save power while the controller is idle. - -Signed-off-by: Samuel Holland ---- - drivers/bus/sunxi-rsb.c | 44 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 44 insertions(+) - ---- a/drivers/bus/sunxi-rsb.c -+++ b/drivers/bus/sunxi-rsb.c -@@ -46,6 +46,7 @@ - #include - #include - #include -+#include - #include - #include - #include -@@ -337,6 +338,10 @@ static int sunxi_rsb_read(struct sunxi_r - return -EINVAL; - } - -+ ret = pm_runtime_resume_and_get(rsb->dev); -+ if (ret) -+ return ret; -+ - mutex_lock(&rsb->lock); - - writel(addr, rsb->regs + RSB_ADDR); -@@ -352,6 +357,9 @@ static int sunxi_rsb_read(struct sunxi_r - unlock: - mutex_unlock(&rsb->lock); - -+ pm_runtime_mark_last_busy(rsb->dev); -+ pm_runtime_put_autosuspend(rsb->dev); -+ - return ret; - } - -@@ -379,6 +387,10 @@ static int sunxi_rsb_write(struct sunxi_ - return -EINVAL; - } - -+ ret = pm_runtime_resume_and_get(rsb->dev); -+ if (ret) -+ return ret; -+ - mutex_lock(&rsb->lock); - - writel(addr, rsb->regs + RSB_ADDR); -@@ -389,6 +401,9 @@ static int sunxi_rsb_write(struct sunxi_ - - mutex_unlock(&rsb->lock); - -+ pm_runtime_mark_last_busy(rsb->dev); -+ pm_runtime_put_autosuspend(rsb->dev); -+ - return ret; - } - -@@ -672,10 +687,29 @@ err_clk_disable: - - static void sunxi_rsb_hw_exit(struct sunxi_rsb *rsb) - { -+ /* Keep the clock and PM reference counts consistent. */ -+ if (pm_runtime_status_suspended(rsb->dev)) -+ pm_runtime_resume(rsb->dev); - reset_control_assert(rsb->rstc); - clk_disable_unprepare(rsb->clk); - } - -+static int __maybe_unused sunxi_rsb_runtime_suspend(struct device *dev) -+{ -+ struct sunxi_rsb *rsb = dev_get_drvdata(dev); -+ -+ clk_disable_unprepare(rsb->clk); -+ -+ return 0; -+} -+ -+static int __maybe_unused sunxi_rsb_runtime_resume(struct device *dev) -+{ -+ struct sunxi_rsb *rsb = dev_get_drvdata(dev); -+ -+ return clk_prepare_enable(rsb->clk); -+} -+ - static int __maybe_unused sunxi_rsb_suspend(struct device *dev) - { - struct sunxi_rsb *rsb = dev_get_drvdata(dev); -@@ -758,6 +792,12 @@ static int sunxi_rsb_probe(struct platfo - if (ret) - dev_warn(dev, "Initialize device mode failed: %d\n", ret); - -+ pm_suspend_ignore_children(dev, true); -+ pm_runtime_set_active(dev); -+ pm_runtime_set_autosuspend_delay(dev, MSEC_PER_SEC); -+ pm_runtime_use_autosuspend(dev); -+ pm_runtime_enable(dev); -+ - of_rsb_register_devices(rsb); - - return 0; -@@ -768,6 +808,7 @@ static int sunxi_rsb_remove(struct platf - struct sunxi_rsb *rsb = platform_get_drvdata(pdev); - - device_for_each_child(rsb->dev, NULL, sunxi_rsb_remove_devices); -+ pm_runtime_disable(&pdev->dev); - sunxi_rsb_hw_exit(rsb); - - return 0; -@@ -777,10 +818,13 @@ static void sunxi_rsb_shutdown(struct pl - { - struct sunxi_rsb *rsb = platform_get_drvdata(pdev); - -+ pm_runtime_disable(&pdev->dev); - sunxi_rsb_hw_exit(rsb); - } - - static const struct dev_pm_ops sunxi_rsb_dev_pm_ops = { -+ SET_RUNTIME_PM_OPS(sunxi_rsb_runtime_suspend, -+ sunxi_rsb_runtime_resume, NULL) - SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sunxi_rsb_suspend, sunxi_rsb_resume) - }; -