From 55836c60740bbf6f602216360f5ea785675153d2 Mon Sep 17 00:00:00 2001 From: Paolo Sabatino Date: Tue, 5 Mar 2024 17:42:21 +0100 Subject: [PATCH] rockchip: add patches to fix peripheral mode rk322x has peripheral mode that is not working really well, add various non-upstream patches and timing adjustments that makes things a bit more usable (mass storage and ethernet works, uac isn't) --- config/kernel/linux-rockchip-current.config | 92 ++++++++++-------- config/kernel/linux-rockchip-edge.config | 97 +++++++++++-------- .../archive/rockchip-6.6/armbian.series | 4 + .../general-dwc2-fix-wait-peripheral.patch | 26 +++++ .../general-dwc2-fix-wait-time.patch | 56 +++++++++++ .../general-dwc2-nak-gadget.patch | 88 +++++++++++++++++ .../general-rockchip-various-fixes.patch | 13 --- .../rk322x-dwc2-no-clock-gating.patch | 27 ++++++ patch/kernel/archive/rockchip-6.6/series.conf | 4 + .../archive/rockchip-6.7/armbian.series | 1 + .../general-dwc2-fix-wait-peripheral.patch | 26 +++++ .../general-dwc2-fix-wait-time.patch | 56 +++++++++++ .../general-dwc2-nak-gadget.patch | 88 +++++++++++++++++ .../rk322x-dwc2-no-clock-gating.patch | 27 ++++++ patch/kernel/archive/rockchip-6.7/series.conf | 1 + 15 files changed, 512 insertions(+), 94 deletions(-) create mode 100644 patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-peripheral.patch create mode 100644 patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-time.patch create mode 100644 patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-nak-gadget.patch create mode 100644 patch/kernel/archive/rockchip-6.6/patches.armbian/rk322x-dwc2-no-clock-gating.patch create mode 100644 patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-peripheral.patch create mode 100644 patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-time.patch create mode 100644 patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-nak-gadget.patch create mode 100644 patch/kernel/archive/rockchip-6.7/patches.armbian/rk322x-dwc2-no-clock-gating.patch diff --git a/config/kernel/linux-rockchip-current.config b/config/kernel/linux-rockchip-current.config index 68c55138e2..487a991ba1 100644 --- a/config/kernel/linux-rockchip-current.config +++ b/config/kernel/linux-rockchip-current.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 6.6.10 Kernel Configuration +# Linux/arm 6.6.20 Kernel Configuration # CONFIG_CC_VERSION_TEXT="arm-linux-gnueabihf-gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0" CONFIG_CC_IS_GCC=y @@ -15,6 +15,7 @@ CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_PAHOLE_VERSION=122 @@ -2560,6 +2561,7 @@ CONFIG_WLAN_VENDOR_TI=y # CONFIG_WLCORE is not set # CONFIG_RTL8723DU is not set # CONFIG_RTL8723DS is not set +# CONFIG_RTL8822CS is not set # CONFIG_RTL8822BU is not set # CONFIG_RTL8821CU is not set # CONFIG_88XXAU is not set @@ -3056,7 +3058,6 @@ CONFIG_SPI_ROCKCHIP=y # CONFIG_SPI_MXIC is not set # CONFIG_SPI_XCOMM is not set # CONFIG_SPI_XILINX is not set -# CONFIG_SPI_ZYNQMP_GQSPI is not set # CONFIG_SPI_AMD is not set # @@ -3605,7 +3606,6 @@ CONFIG_MFD_RK8XX_I2C=y # CONFIG_MFD_SKY81452 is not set # CONFIG_MFD_STMPE is not set CONFIG_MFD_SYSCON=y -# CONFIG_MFD_TI_AM335X_TSCADC is not set # CONFIG_MFD_LP3943 is not set # CONFIG_MFD_LP8788 is not set # CONFIG_MFD_TI_LMU is not set @@ -4120,18 +4120,18 @@ CONFIG_MEDIA_COMMON_OPTIONS=y # CONFIG_CYPRESS_FIRMWARE=m CONFIG_TTPCI_EEPROM=m -CONFIG_UVC_COMMON=m +CONFIG_UVC_COMMON=y CONFIG_VIDEO_CX2341X=m CONFIG_VIDEO_TVEEPROM=m CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_SMS_SIANO_MDTV=m CONFIG_SMS_SIANO_RC=y -CONFIG_VIDEOBUF2_CORE=m -CONFIG_VIDEOBUF2_V4L2=m -CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_V4L2=y +CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_DMA_CONTIG=m -CONFIG_VIDEOBUF2_VMALLOC=m -CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_VMALLOC=y +CONFIG_VIDEOBUF2_DMA_SG=y # end of Media drivers # @@ -5489,7 +5489,7 @@ CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_DEBUG_FS is not set -CONFIG_USB_GADGET_VBUS_DRAW=300 +CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 # CONFIG_U_SERIAL_CONSOLE is not set @@ -5502,8 +5502,8 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 # CONFIG_USB_PXA27X is not set # CONFIG_USB_MV_UDC is not set # CONFIG_USB_MV_U3D is not set -CONFIG_USB_SNP_CORE=m -CONFIG_USB_SNP_UDC_PLAT=m +CONFIG_USB_SNP_CORE=y +CONFIG_USB_SNP_UDC_PLAT=y # CONFIG_USB_M66592 is not set # CONFIG_USB_BDC_UDC is not set # CONFIG_USB_NET2272 is not set @@ -5513,58 +5513,74 @@ CONFIG_USB_SNP_UDC_PLAT=m # end of USB Peripheral Controller CONFIG_USB_LIBCOMPOSITE=y -CONFIG_USB_F_ACM=m -CONFIG_USB_U_SERIAL=m -CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_ACM=y +CONFIG_USB_U_SERIAL=y +CONFIG_USB_U_ETHER=y +CONFIG_USB_U_AUDIO=m +CONFIG_USB_F_SERIAL=y CONFIG_USB_F_OBEX=m +CONFIG_USB_F_ECM=y +CONFIG_USB_F_EEM=y +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_RNDIS=m CONFIG_USB_F_MASS_STORAGE=y CONFIG_USB_F_FS=y -CONFIG_USB_F_MIDI2=m -CONFIG_USB_F_HID=m +CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC2=m +CONFIG_USB_F_UVC=y +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_HID=y +CONFIG_USB_F_PRINTER=y CONFIG_USB_F_TCM=m CONFIG_USB_CONFIGFS=y -# CONFIG_USB_CONFIGFS_SERIAL is not set -# CONFIG_USB_CONFIGFS_ACM is not set +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y # CONFIG_USB_CONFIGFS_OBEX is not set # CONFIG_USB_CONFIGFS_NCM is not set -# CONFIG_USB_CONFIGFS_ECM is not set +CONFIG_USB_CONFIGFS_ECM=y # CONFIG_USB_CONFIGFS_ECM_SUBSET is not set # CONFIG_USB_CONFIGFS_RNDIS is not set -# CONFIG_USB_CONFIGFS_EEM is not set +CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y # CONFIG_USB_CONFIGFS_F_LB_SS is not set CONFIG_USB_CONFIGFS_F_FS=y -# CONFIG_USB_CONFIGFS_F_UAC1 is not set +CONFIG_USB_CONFIGFS_F_UAC1=y # CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set -# CONFIG_USB_CONFIGFS_F_UAC2 is not set -# CONFIG_USB_CONFIGFS_F_MIDI is not set -CONFIG_USB_CONFIGFS_F_MIDI2=y -# CONFIG_USB_CONFIGFS_F_HID is not set -# CONFIG_USB_CONFIGFS_F_UVC is not set -# CONFIG_USB_CONFIGFS_F_PRINTER is not set +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +# CONFIG_USB_CONFIGFS_F_MIDI2 is not set +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_F_PRINTER=y CONFIG_USB_CONFIGFS_F_TCM=y # # USB Gadget precomposed configurations # # CONFIG_USB_ZERO is not set -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_ETH is not set +CONFIG_USB_AUDIO=m +CONFIG_GADGET_UAC1=y +# CONFIG_GADGET_UAC1_LEGACY is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_ETH_EEM=y # CONFIG_USB_G_NCM is not set CONFIG_USB_GADGETFS=m # CONFIG_USB_FUNCTIONFS is not set CONFIG_USB_MASS_STORAGE=m # CONFIG_USB_GADGET_TARGET is not set CONFIG_USB_G_SERIAL=m -# CONFIG_USB_MIDI_GADGET is not set -# CONFIG_USB_G_PRINTER is not set -# CONFIG_USB_CDC_COMPOSITE is not set -# CONFIG_USB_G_ACM_MS is not set -# CONFIG_USB_G_MULTI is not set +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_MULTI_RNDIS=y +# CONFIG_USB_G_MULTI_CDC is not set CONFIG_USB_G_HID=m # CONFIG_USB_G_DBGP is not set -# CONFIG_USB_G_WEBCAM is not set -# CONFIG_USB_RAW_GADGET is not set +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_RAW_GADGET=m # end of USB Gadget precomposed configurations # CONFIG_TYPEC is not set @@ -5608,8 +5624,6 @@ CONFIG_MMC_DW_ROCKCHIP=y CONFIG_MMC_HSQ=m # CONFIG_MMC_MTK is not set # CONFIG_MMC_SDHCI_XENON is not set -# CONFIG_MMC_SDHCI_OMAP is not set -# CONFIG_MMC_SDHCI_AM654 is not set # CONFIG_SCSI_UFSHCD is not set # CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=y diff --git a/config/kernel/linux-rockchip-edge.config b/config/kernel/linux-rockchip-edge.config index a946999476..33a9289951 100644 --- a/config/kernel/linux-rockchip-edge.config +++ b/config/kernel/linux-rockchip-edge.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 6.7.0 Kernel Configuration +# Linux/arm 6.7.8 Kernel Configuration # CONFIG_CC_VERSION_TEXT="arm-linux-gnueabihf-gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0" CONFIG_CC_IS_GCC=y @@ -15,6 +15,7 @@ CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y +CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y CONFIG_PAHOLE_VERSION=122 @@ -2501,8 +2502,7 @@ CONFIG_MT7663U=m CONFIG_MT7921_COMMON=m # CONFIG_MT7921S is not set CONFIG_MT7921U=m -CONFIG_MT7925_COMMON=m -CONFIG_MT7925U=m +# CONFIG_MT7925U is not set # CONFIG_WLAN_VENDOR_MICROCHIP is not set CONFIG_WLAN_VENDOR_PURELIFI=y # CONFIG_PLFXLC is not set @@ -2568,6 +2568,7 @@ CONFIG_WLAN_VENDOR_TI=y # CONFIG_WLCORE is not set # CONFIG_RTL8723DU is not set # CONFIG_RTL8723DS is not set +# CONFIG_RTL8822CS is not set # CONFIG_RTL8822BU is not set # CONFIG_RTL8821CU is not set # CONFIG_88XXAU is not set @@ -3064,7 +3065,6 @@ CONFIG_SPI_ROCKCHIP=y # CONFIG_SPI_MXIC is not set # CONFIG_SPI_XCOMM is not set # CONFIG_SPI_XILINX is not set -# CONFIG_SPI_ZYNQMP_GQSPI is not set # CONFIG_SPI_AMD is not set # @@ -3615,7 +3615,6 @@ CONFIG_MFD_RK8XX_I2C=y # CONFIG_MFD_SKY81452 is not set # CONFIG_MFD_STMPE is not set CONFIG_MFD_SYSCON=y -# CONFIG_MFD_TI_AM335X_TSCADC is not set # CONFIG_MFD_LP3943 is not set # CONFIG_MFD_LP8788 is not set # CONFIG_MFD_TI_LMU is not set @@ -4135,18 +4134,18 @@ CONFIG_MEDIA_COMMON_OPTIONS=y # CONFIG_CYPRESS_FIRMWARE=m CONFIG_TTPCI_EEPROM=m -CONFIG_UVC_COMMON=m +CONFIG_UVC_COMMON=y CONFIG_VIDEO_CX2341X=m CONFIG_VIDEO_TVEEPROM=m CONFIG_DVB_B2C2_FLEXCOP=m CONFIG_SMS_SIANO_MDTV=m CONFIG_SMS_SIANO_RC=y -CONFIG_VIDEOBUF2_CORE=m -CONFIG_VIDEOBUF2_V4L2=m -CONFIG_VIDEOBUF2_MEMOPS=m +CONFIG_VIDEOBUF2_CORE=y +CONFIG_VIDEOBUF2_V4L2=y +CONFIG_VIDEOBUF2_MEMOPS=y CONFIG_VIDEOBUF2_DMA_CONTIG=m -CONFIG_VIDEOBUF2_VMALLOC=m -CONFIG_VIDEOBUF2_DMA_SG=m +CONFIG_VIDEOBUF2_VMALLOC=y +CONFIG_VIDEOBUF2_DMA_SG=y # end of Media drivers # @@ -5511,7 +5510,7 @@ CONFIG_USB_GADGET=y # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_DEBUG_FS is not set -CONFIG_USB_GADGET_VBUS_DRAW=300 +CONFIG_USB_GADGET_VBUS_DRAW=2 CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 # CONFIG_U_SERIAL_CONSOLE is not set @@ -5524,8 +5523,8 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 # CONFIG_USB_PXA27X is not set # CONFIG_USB_MV_UDC is not set # CONFIG_USB_MV_U3D is not set -CONFIG_USB_SNP_CORE=m -CONFIG_USB_SNP_UDC_PLAT=m +CONFIG_USB_SNP_CORE=y +CONFIG_USB_SNP_UDC_PLAT=y # CONFIG_USB_M66592 is not set # CONFIG_USB_BDC_UDC is not set # CONFIG_USB_NET2272 is not set @@ -5535,58 +5534,74 @@ CONFIG_USB_SNP_UDC_PLAT=m # end of USB Peripheral Controller CONFIG_USB_LIBCOMPOSITE=y -CONFIG_USB_F_ACM=m -CONFIG_USB_U_SERIAL=m -CONFIG_USB_F_SERIAL=m +CONFIG_USB_F_ACM=y +CONFIG_USB_U_SERIAL=y +CONFIG_USB_U_ETHER=y +CONFIG_USB_U_AUDIO=m +CONFIG_USB_F_SERIAL=y CONFIG_USB_F_OBEX=m +CONFIG_USB_F_ECM=y +CONFIG_USB_F_EEM=y +CONFIG_USB_F_SUBSET=m +CONFIG_USB_F_RNDIS=m CONFIG_USB_F_MASS_STORAGE=y CONFIG_USB_F_FS=y -CONFIG_USB_F_MIDI2=m -CONFIG_USB_F_HID=m +CONFIG_USB_F_UAC1=m +CONFIG_USB_F_UAC2=m +CONFIG_USB_F_UVC=y +CONFIG_USB_F_MIDI=m +CONFIG_USB_F_HID=y +CONFIG_USB_F_PRINTER=y CONFIG_USB_F_TCM=m CONFIG_USB_CONFIGFS=y -# CONFIG_USB_CONFIGFS_SERIAL is not set -# CONFIG_USB_CONFIGFS_ACM is not set +CONFIG_USB_CONFIGFS_SERIAL=y +CONFIG_USB_CONFIGFS_ACM=y # CONFIG_USB_CONFIGFS_OBEX is not set # CONFIG_USB_CONFIGFS_NCM is not set -# CONFIG_USB_CONFIGFS_ECM is not set +CONFIG_USB_CONFIGFS_ECM=y # CONFIG_USB_CONFIGFS_ECM_SUBSET is not set # CONFIG_USB_CONFIGFS_RNDIS is not set -# CONFIG_USB_CONFIGFS_EEM is not set +CONFIG_USB_CONFIGFS_EEM=y CONFIG_USB_CONFIGFS_MASS_STORAGE=y # CONFIG_USB_CONFIGFS_F_LB_SS is not set CONFIG_USB_CONFIGFS_F_FS=y -# CONFIG_USB_CONFIGFS_F_UAC1 is not set +CONFIG_USB_CONFIGFS_F_UAC1=y # CONFIG_USB_CONFIGFS_F_UAC1_LEGACY is not set -# CONFIG_USB_CONFIGFS_F_UAC2 is not set -# CONFIG_USB_CONFIGFS_F_MIDI is not set -CONFIG_USB_CONFIGFS_F_MIDI2=y -# CONFIG_USB_CONFIGFS_F_HID is not set -# CONFIG_USB_CONFIGFS_F_UVC is not set -# CONFIG_USB_CONFIGFS_F_PRINTER is not set +CONFIG_USB_CONFIGFS_F_UAC2=y +CONFIG_USB_CONFIGFS_F_MIDI=y +# CONFIG_USB_CONFIGFS_F_MIDI2 is not set +CONFIG_USB_CONFIGFS_F_HID=y +CONFIG_USB_CONFIGFS_F_UVC=y +CONFIG_USB_CONFIGFS_F_PRINTER=y CONFIG_USB_CONFIGFS_F_TCM=y # # USB Gadget precomposed configurations # # CONFIG_USB_ZERO is not set -# CONFIG_USB_AUDIO is not set -# CONFIG_USB_ETH is not set +CONFIG_USB_AUDIO=m +CONFIG_GADGET_UAC1=y +# CONFIG_GADGET_UAC1_LEGACY is not set +CONFIG_USB_ETH=m +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_ETH_EEM=y # CONFIG_USB_G_NCM is not set CONFIG_USB_GADGETFS=m # CONFIG_USB_FUNCTIONFS is not set CONFIG_USB_MASS_STORAGE=m # CONFIG_USB_GADGET_TARGET is not set CONFIG_USB_G_SERIAL=m -# CONFIG_USB_MIDI_GADGET is not set -# CONFIG_USB_G_PRINTER is not set -# CONFIG_USB_CDC_COMPOSITE is not set -# CONFIG_USB_G_ACM_MS is not set -# CONFIG_USB_G_MULTI is not set +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_G_PRINTER=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_G_ACM_MS=m +CONFIG_USB_G_MULTI=m +CONFIG_USB_G_MULTI_RNDIS=y +# CONFIG_USB_G_MULTI_CDC is not set CONFIG_USB_G_HID=m # CONFIG_USB_G_DBGP is not set -# CONFIG_USB_G_WEBCAM is not set -# CONFIG_USB_RAW_GADGET is not set +CONFIG_USB_G_WEBCAM=m +CONFIG_USB_RAW_GADGET=m # end of USB Gadget precomposed configurations # CONFIG_TYPEC is not set @@ -5630,8 +5645,6 @@ CONFIG_MMC_DW_ROCKCHIP=y CONFIG_MMC_HSQ=m # CONFIG_MMC_MTK is not set # CONFIG_MMC_SDHCI_XENON is not set -# CONFIG_MMC_SDHCI_OMAP is not set -# CONFIG_MMC_SDHCI_AM654 is not set # CONFIG_SCSI_UFSHCD is not set # CONFIG_MEMSTICK is not set CONFIG_NEW_LEDS=y @@ -6991,7 +7004,7 @@ CONFIG_F2FS_IOSTAT=y # CONFIG_F2FS_UNFAIR_RWSEM is not set CONFIG_BCACHEFS_FS=m CONFIG_BCACHEFS_QUOTA=y -CONFIG_BCACHEFS_ERASURE_CODING=y +# CONFIG_BCACHEFS_ERASURE_CODING is not set CONFIG_BCACHEFS_POSIX_ACL=y CONFIG_BCACHEFS_DEBUG_TRANSACTIONS=y # CONFIG_BCACHEFS_DEBUG is not set diff --git a/patch/kernel/archive/rockchip-6.6/armbian.series b/patch/kernel/archive/rockchip-6.6/armbian.series index a590bdf1a1..3fd63480c9 100644 --- a/patch/kernel/archive/rockchip-6.6/armbian.series +++ b/patch/kernel/archive/rockchip-6.6/armbian.series @@ -29,6 +29,9 @@ patches.armbian/general-add-overlay-compilation-support.patch patches.armbian/general-add-overlay-configfs.patch patches.armbian/general-add-restart-handler-for-act8846.patch + patches.armbian/general-dwc2-fix-wait-peripheral.patch + patches.armbian/general-dwc2-fix-wait-time.patch + patches.armbian/general-dwc2-nak-gadget.patch patches.armbian/general-fix-reboot-from-kwiboo.patch patches.armbian/general-linux-export-mm-trace-rss-stats.patch patches.armbian/general-rk322x-gpio-ir-driver.patch @@ -41,6 +44,7 @@ patches.armbian/rk322x-dmc-driver-02-sip-constants.patch patches.armbian/rk322x-dmc-driver-03-dfi-driver.patch patches.armbian/rk322x-dmc-driver-04-driver.patch + patches.armbian/rk322x-dwc2-no-clock-gating.patch patches.armbian/wifi-ath9k-no-bulk-EP3-EP4.patch patches.armbian/wifi-brcmfmac-add-bcm43342.patch patches.armbian/wifi-brcmfmac-ap6330-firmware.patch diff --git a/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-peripheral.patch b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-peripheral.patch new file mode 100644 index 0000000000..9a5c933fdf --- /dev/null +++ b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-peripheral.patch @@ -0,0 +1,26 @@ +From e477f1546f2739e9ea053d677f421e01a9babff4 Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sat, 2 Mar 2024 21:56:44 +0100 +Subject: [PATCH] dwc2: add fixes for rk322x peripheral mode + +--- + drivers/usb/dwc2/core.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c +index 5635e4d7ec88..0a3d387a497a 100644 +--- a/drivers/usb/dwc2/core.c ++++ b/drivers/usb/dwc2/core.c +@@ -532,6 +532,9 @@ void dwc2_force_mode(struct dwc2_hsotg *hsotg, bool host) + gusbcfg |= set; + dwc2_writel(hsotg, gusbcfg, GUSBCFG); + ++ /* On some rockchip platforms, this fixes hang on reset in peripheral mode */ ++ msleep(10); ++ + dwc2_wait_for_mode(hsotg, host); + return; + } +-- +2.34.1 + diff --git a/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-time.patch b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-time.patch new file mode 100644 index 0000000000..f8517ac547 --- /dev/null +++ b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-fix-wait-time.patch @@ -0,0 +1,56 @@ +From ee7c3ab6b5a4d284a04f110792508a7f8decd7f7 Mon Sep 17 00:00:00 2001 +From: William Wu +Date: Tue, 6 Dec 2022 14:45:54 +0800 +Subject: [PATCH] usb: dwc2: fix waiting time for host only mode + +The current code uses 50ms sleep to wait for host only +mode, the delay time is not enough for some Rockchip +platforms (e.g RK3036G EVB1). + +Test on RK3036G EVB1, the dwc2 host only controller reg +GOTGCTL.ConIDSts = 1'b1 (device mode) if only wait for +50ms. And the host fails to detect usb2 device with the +following error log: + +usb usb2-port1: connect-debounce failed + +This patch checks the GOTGCTL.ConIDSts for host only +mode and increases the maximum waiting time to 200ms. + +Signed-off-by: William Wu +Change-Id: Ie28299934aba09907ea08f5fd3b34bf2fb35822e +--- + drivers/usb/dwc2/core.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c +index 15911ac7582b4..cbd5f1142f35e 100644 +--- a/drivers/usb/dwc2/core.c ++++ b/drivers/usb/dwc2/core.c +@@ -656,14 +656,24 @@ static void dwc2_clear_force_mode(struct dwc2_hsotg *hsotg) + */ + void dwc2_force_dr_mode(struct dwc2_hsotg *hsotg) + { ++ u32 count = 0; ++ + switch (hsotg->dr_mode) { + case USB_DR_MODE_HOST: + /* + * NOTE: This is required for some rockchip soc based + * platforms on their host-only dwc2. + */ +- if (!dwc2_hw_is_otg(hsotg)) +- msleep(50); ++ if (!dwc2_hw_is_otg(hsotg)) { ++ while (dwc2_readl(hsotg, GOTGCTL) & GOTGCTL_CONID_B) { ++ msleep(20); ++ if (++count > 10) ++ break; ++ } ++ if (count > 10) ++ dev_err(hsotg->dev, ++ "Waiting for Host Mode timed out"); ++ } + + break; + case USB_DR_MODE_PERIPHERAL: diff --git a/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-nak-gadget.patch b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-nak-gadget.patch new file mode 100644 index 0000000000..1162a96d93 --- /dev/null +++ b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-dwc2-nak-gadget.patch @@ -0,0 +1,88 @@ +From 15b317ff84dc09faa47995b1d973d96a6172fa4c Mon Sep 17 00:00:00 2001 +From: William Wu +Date: Thu, 15 Dec 2022 14:19:28 +0800 +Subject: [PATCH] usb: dwc2: gadget: Disable nak interrupt when get first isoc + in token + +The dwc2 driver use the nak interrupt for the starting point +of isoc-in transfer. The first nak interrupt for isoc-in means +that in token has arrived and the dwc2 driver can obtain the +(micro) frame of the token to set the even/odd (micro) frame +field of DIEPCTL. + +However, on some platforms (e.g Rockchip rk3308) which don't +support the "OTG_MULTI_PROC_INTRPT", it means that all device +endpoints share the same nak mask and interrupt. If the nak +interrupt is always enabled, it may trigger nak interrupt storm +by other endpoints except the isoc-in endpoint. So we disable +the nak interrupt when get first isoc in token if the feature +"OTG_MULTI_PROC_INTRPT" isn't enabled. + +Signed-off-by: William Wu +Change-Id: I99c71a5e0d7903346fd8f71619b6736c3181c0ec +--- + drivers/usb/dwc2/gadget.c | 37 +++++++++++++++++++++++++++++++++++-- + 1 file changed, 35 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c +index e1dc4735a99c..0e185ef474ac 100644 +--- a/drivers/usb/dwc2/gadget.c ++++ b/drivers/usb/dwc2/gadget.c +@@ -1402,6 +1402,8 @@ static int dwc2_gadget_set_ep0_desc_chain(struct dwc2_hsotg *hsotg, + return 0; + } + ++static void dwc2_gadget_start_next_request(struct dwc2_hsotg_ep *hs_ep); ++ + static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req, + gfp_t gfp_flags) + { +@@ -1518,6 +1520,20 @@ static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req, + + if (hs_ep->target_frame != TARGET_FRAME_INITIAL) + dwc2_hsotg_start_req(hs, hs_ep, hs_req, false); ++ } else if (hs_ep->isochronous && hs_ep->dir_in && !hs_ep->req && ++ !(dwc2_readl(hs, GHWCFG2) & GHWCFG2_MULTI_PROC_INT)) { ++ /* Update current frame number value. */ ++ hs->frame_number = dwc2_hsotg_read_frameno(hs); ++ while (dwc2_gadget_target_frame_elapsed(hs_ep)) { ++ dwc2_gadget_incr_frame_num(hs_ep); ++ /* Update current frame number value once more as it ++ * changes here. ++ */ ++ hs->frame_number = dwc2_hsotg_read_frameno(hs); ++ } ++ ++ if (hs_ep->target_frame != TARGET_FRAME_INITIAL) ++ dwc2_gadget_start_next_request(hs_ep); + } + return 0; + } +@@ -2989,8 +3005,25 @@ static void dwc2_gadget_handle_nak(struct dwc2_hsotg_ep *hs_ep) + + hs_ep->target_frame = hsotg->frame_number; + if (hs_ep->interval > 1) { +- u32 ctrl = dwc2_readl(hsotg, +- DIEPCTL(hs_ep->index)); ++ u32 mask; ++ u32 ctrl; ++ ++ /* ++ * Disable nak interrupt when we have got the first ++ * isoc in token. This can avoid nak interrupt storm ++ * on the Rockchip platforms which don't support the ++ * "OTG_MULTI_PROC_INTRPT", and all device endpoints ++ * share the same nak mask and interrupt. ++ */ ++ if (!(dwc2_readl(hsotg, GHWCFG2) & ++ GHWCFG2_MULTI_PROC_INT)) { ++ mask = dwc2_readl(hsotg, DIEPMSK); ++ mask &= ~DIEPMSK_NAKMSK; ++ dwc2_writel(hsotg, mask, DIEPMSK); ++ } ++ ++ ctrl = dwc2_readl(hsotg, ++ DIEPCTL(hs_ep->index)); + if (hs_ep->target_frame & 0x1) + ctrl |= DXEPCTL_SETODDFR; + else diff --git a/patch/kernel/archive/rockchip-6.6/patches.armbian/general-rockchip-various-fixes.patch b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-rockchip-various-fixes.patch index 549684cec5..58552ddf57 100644 --- a/patch/kernel/archive/rockchip-6.6/patches.armbian/general-rockchip-various-fixes.patch +++ b/patch/kernel/archive/rockchip-6.6/patches.armbian/general-rockchip-various-fixes.patch @@ -764,19 +764,6 @@ index fddb4022c..9583c76b4 100644 rockchip_pm_add_subdomain(pmu, np); } -diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c -index 272ae5722..cec178404 100644 ---- a/drivers/usb/dwc2/core.c -+++ b/drivers/usb/dwc2/core.c -@@ -607,7 +607,7 @@ void dwc2_force_dr_mode(struct dwc2_hsotg *hsotg) - * platforms on their host-only dwc2. - */ - if (!dwc2_hw_is_otg(hsotg)) -- msleep(50); -+ msleep(200); - - break; - case USB_DR_MODE_PERIPHERAL: -- 2.25.1 diff --git a/patch/kernel/archive/rockchip-6.6/patches.armbian/rk322x-dwc2-no-clock-gating.patch b/patch/kernel/archive/rockchip-6.6/patches.armbian/rk322x-dwc2-no-clock-gating.patch new file mode 100644 index 0000000000..1059c68868 --- /dev/null +++ b/patch/kernel/archive/rockchip-6.6/patches.armbian/rk322x-dwc2-no-clock-gating.patch @@ -0,0 +1,27 @@ +diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c +index 93f52e371cdd..fb135f62cf26 100644 +--- a/drivers/usb/dwc2/params.c ++++ b/drivers/usb/dwc2/params.c +@@ -132,6 +132,14 @@ static void dwc2_set_rk_params(struct dwc2_hsotg *hsotg) + p->hird_threshold_en = false; + } + ++static void dwc2_set_rk3228_params(struct dwc2_hsotg *hsotg) ++{ ++ struct dwc2_core_params *p = &hsotg->params; ++ ++ dwc2_set_rk_params(hsotg); ++ p->no_clock_gating = true; ++} ++ + static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg) + { + struct dwc2_core_params *p = &hsotg->params; +@@ -277,6 +285,7 @@ const struct of_device_id dwc2_of_match_table[] = { + { .compatible = "ingenic,x1830-otg", .data = dwc2_set_x1600_params }, + { .compatible = "ingenic,x2000-otg", .data = dwc2_set_x2000_params }, + { .compatible = "rockchip,rk3066-usb", .data = dwc2_set_rk_params }, ++ { .compatible = "rockchip,rk3228-usb", .data = dwc2_set_rk3228_params }, + { .compatible = "lantiq,arx100-usb", .data = dwc2_set_ltq_params }, + { .compatible = "lantiq,xrx200-usb", .data = dwc2_set_ltq_params }, + { .compatible = "snps,dwc2" }, diff --git a/patch/kernel/archive/rockchip-6.6/series.conf b/patch/kernel/archive/rockchip-6.6/series.conf index d5886738ba..7f86f25b0d 100644 --- a/patch/kernel/archive/rockchip-6.6/series.conf +++ b/patch/kernel/archive/rockchip-6.6/series.conf @@ -39,6 +39,9 @@ patches.armbian/general-add-overlay-compilation-support.patch patches.armbian/general-add-overlay-configfs.patch patches.armbian/general-add-restart-handler-for-act8846.patch + patches.armbian/general-dwc2-fix-wait-peripheral.patch + patches.armbian/general-dwc2-fix-wait-time.patch + patches.armbian/general-dwc2-nak-gadget.patch patches.armbian/general-fix-reboot-from-kwiboo.patch patches.armbian/general-linux-export-mm-trace-rss-stats.patch patches.armbian/general-rk322x-gpio-ir-driver.patch @@ -51,6 +54,7 @@ patches.armbian/rk322x-dmc-driver-02-sip-constants.patch patches.armbian/rk322x-dmc-driver-03-dfi-driver.patch patches.armbian/rk322x-dmc-driver-04-driver.patch + patches.armbian/rk322x-dwc2-no-clock-gating.patch patches.armbian/wifi-ath9k-no-bulk-EP3-EP4.patch patches.armbian/wifi-brcmfmac-add-bcm43342.patch patches.armbian/wifi-brcmfmac-ap6330-firmware.patch diff --git a/patch/kernel/archive/rockchip-6.7/armbian.series b/patch/kernel/archive/rockchip-6.7/armbian.series index a590bdf1a1..022bc576b6 100644 --- a/patch/kernel/archive/rockchip-6.7/armbian.series +++ b/patch/kernel/archive/rockchip-6.7/armbian.series @@ -37,6 +37,7 @@ patches.armbian/ir-keymap-xt-q8l-v10.patch patches.armbian/misc-tinkerboard-spi-interface.patch patches.armbian/mmc-tinkerboard-sdmmc-reboot-fix.patch + patches.armbian/rk322x-dwc2-no-clock-gating.patch patches.armbian/rk322x-dmc-driver-01-sipv2-calls.patch patches.armbian/rk322x-dmc-driver-02-sip-constants.patch patches.armbian/rk322x-dmc-driver-03-dfi-driver.patch diff --git a/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-peripheral.patch b/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-peripheral.patch new file mode 100644 index 0000000000..9a5c933fdf --- /dev/null +++ b/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-peripheral.patch @@ -0,0 +1,26 @@ +From e477f1546f2739e9ea053d677f421e01a9babff4 Mon Sep 17 00:00:00 2001 +From: Paolo Sabatino +Date: Sat, 2 Mar 2024 21:56:44 +0100 +Subject: [PATCH] dwc2: add fixes for rk322x peripheral mode + +--- + drivers/usb/dwc2/core.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c +index 5635e4d7ec88..0a3d387a497a 100644 +--- a/drivers/usb/dwc2/core.c ++++ b/drivers/usb/dwc2/core.c +@@ -532,6 +532,9 @@ void dwc2_force_mode(struct dwc2_hsotg *hsotg, bool host) + gusbcfg |= set; + dwc2_writel(hsotg, gusbcfg, GUSBCFG); + ++ /* On some rockchip platforms, this fixes hang on reset in peripheral mode */ ++ msleep(10); ++ + dwc2_wait_for_mode(hsotg, host); + return; + } +-- +2.34.1 + diff --git a/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-time.patch b/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-time.patch new file mode 100644 index 0000000000..f8517ac547 --- /dev/null +++ b/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-fix-wait-time.patch @@ -0,0 +1,56 @@ +From ee7c3ab6b5a4d284a04f110792508a7f8decd7f7 Mon Sep 17 00:00:00 2001 +From: William Wu +Date: Tue, 6 Dec 2022 14:45:54 +0800 +Subject: [PATCH] usb: dwc2: fix waiting time for host only mode + +The current code uses 50ms sleep to wait for host only +mode, the delay time is not enough for some Rockchip +platforms (e.g RK3036G EVB1). + +Test on RK3036G EVB1, the dwc2 host only controller reg +GOTGCTL.ConIDSts = 1'b1 (device mode) if only wait for +50ms. And the host fails to detect usb2 device with the +following error log: + +usb usb2-port1: connect-debounce failed + +This patch checks the GOTGCTL.ConIDSts for host only +mode and increases the maximum waiting time to 200ms. + +Signed-off-by: William Wu +Change-Id: Ie28299934aba09907ea08f5fd3b34bf2fb35822e +--- + drivers/usb/dwc2/core.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c +index 15911ac7582b4..cbd5f1142f35e 100644 +--- a/drivers/usb/dwc2/core.c ++++ b/drivers/usb/dwc2/core.c +@@ -656,14 +656,24 @@ static void dwc2_clear_force_mode(struct dwc2_hsotg *hsotg) + */ + void dwc2_force_dr_mode(struct dwc2_hsotg *hsotg) + { ++ u32 count = 0; ++ + switch (hsotg->dr_mode) { + case USB_DR_MODE_HOST: + /* + * NOTE: This is required for some rockchip soc based + * platforms on their host-only dwc2. + */ +- if (!dwc2_hw_is_otg(hsotg)) +- msleep(50); ++ if (!dwc2_hw_is_otg(hsotg)) { ++ while (dwc2_readl(hsotg, GOTGCTL) & GOTGCTL_CONID_B) { ++ msleep(20); ++ if (++count > 10) ++ break; ++ } ++ if (count > 10) ++ dev_err(hsotg->dev, ++ "Waiting for Host Mode timed out"); ++ } + + break; + case USB_DR_MODE_PERIPHERAL: diff --git a/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-nak-gadget.patch b/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-nak-gadget.patch new file mode 100644 index 0000000000..1162a96d93 --- /dev/null +++ b/patch/kernel/archive/rockchip-6.7/patches.armbian/general-dwc2-nak-gadget.patch @@ -0,0 +1,88 @@ +From 15b317ff84dc09faa47995b1d973d96a6172fa4c Mon Sep 17 00:00:00 2001 +From: William Wu +Date: Thu, 15 Dec 2022 14:19:28 +0800 +Subject: [PATCH] usb: dwc2: gadget: Disable nak interrupt when get first isoc + in token + +The dwc2 driver use the nak interrupt for the starting point +of isoc-in transfer. The first nak interrupt for isoc-in means +that in token has arrived and the dwc2 driver can obtain the +(micro) frame of the token to set the even/odd (micro) frame +field of DIEPCTL. + +However, on some platforms (e.g Rockchip rk3308) which don't +support the "OTG_MULTI_PROC_INTRPT", it means that all device +endpoints share the same nak mask and interrupt. If the nak +interrupt is always enabled, it may trigger nak interrupt storm +by other endpoints except the isoc-in endpoint. So we disable +the nak interrupt when get first isoc in token if the feature +"OTG_MULTI_PROC_INTRPT" isn't enabled. + +Signed-off-by: William Wu +Change-Id: I99c71a5e0d7903346fd8f71619b6736c3181c0ec +--- + drivers/usb/dwc2/gadget.c | 37 +++++++++++++++++++++++++++++++++++-- + 1 file changed, 35 insertions(+), 2 deletions(-) + +diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c +index e1dc4735a99c..0e185ef474ac 100644 +--- a/drivers/usb/dwc2/gadget.c ++++ b/drivers/usb/dwc2/gadget.c +@@ -1402,6 +1402,8 @@ static int dwc2_gadget_set_ep0_desc_chain(struct dwc2_hsotg *hsotg, + return 0; + } + ++static void dwc2_gadget_start_next_request(struct dwc2_hsotg_ep *hs_ep); ++ + static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req, + gfp_t gfp_flags) + { +@@ -1518,6 +1520,20 @@ static int dwc2_hsotg_ep_queue(struct usb_ep *ep, struct usb_request *req, + + if (hs_ep->target_frame != TARGET_FRAME_INITIAL) + dwc2_hsotg_start_req(hs, hs_ep, hs_req, false); ++ } else if (hs_ep->isochronous && hs_ep->dir_in && !hs_ep->req && ++ !(dwc2_readl(hs, GHWCFG2) & GHWCFG2_MULTI_PROC_INT)) { ++ /* Update current frame number value. */ ++ hs->frame_number = dwc2_hsotg_read_frameno(hs); ++ while (dwc2_gadget_target_frame_elapsed(hs_ep)) { ++ dwc2_gadget_incr_frame_num(hs_ep); ++ /* Update current frame number value once more as it ++ * changes here. ++ */ ++ hs->frame_number = dwc2_hsotg_read_frameno(hs); ++ } ++ ++ if (hs_ep->target_frame != TARGET_FRAME_INITIAL) ++ dwc2_gadget_start_next_request(hs_ep); + } + return 0; + } +@@ -2989,8 +3005,25 @@ static void dwc2_gadget_handle_nak(struct dwc2_hsotg_ep *hs_ep) + + hs_ep->target_frame = hsotg->frame_number; + if (hs_ep->interval > 1) { +- u32 ctrl = dwc2_readl(hsotg, +- DIEPCTL(hs_ep->index)); ++ u32 mask; ++ u32 ctrl; ++ ++ /* ++ * Disable nak interrupt when we have got the first ++ * isoc in token. This can avoid nak interrupt storm ++ * on the Rockchip platforms which don't support the ++ * "OTG_MULTI_PROC_INTRPT", and all device endpoints ++ * share the same nak mask and interrupt. ++ */ ++ if (!(dwc2_readl(hsotg, GHWCFG2) & ++ GHWCFG2_MULTI_PROC_INT)) { ++ mask = dwc2_readl(hsotg, DIEPMSK); ++ mask &= ~DIEPMSK_NAKMSK; ++ dwc2_writel(hsotg, mask, DIEPMSK); ++ } ++ ++ ctrl = dwc2_readl(hsotg, ++ DIEPCTL(hs_ep->index)); + if (hs_ep->target_frame & 0x1) + ctrl |= DXEPCTL_SETODDFR; + else diff --git a/patch/kernel/archive/rockchip-6.7/patches.armbian/rk322x-dwc2-no-clock-gating.patch b/patch/kernel/archive/rockchip-6.7/patches.armbian/rk322x-dwc2-no-clock-gating.patch new file mode 100644 index 0000000000..1059c68868 --- /dev/null +++ b/patch/kernel/archive/rockchip-6.7/patches.armbian/rk322x-dwc2-no-clock-gating.patch @@ -0,0 +1,27 @@ +diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c +index 93f52e371cdd..fb135f62cf26 100644 +--- a/drivers/usb/dwc2/params.c ++++ b/drivers/usb/dwc2/params.c +@@ -132,6 +132,14 @@ static void dwc2_set_rk_params(struct dwc2_hsotg *hsotg) + p->hird_threshold_en = false; + } + ++static void dwc2_set_rk3228_params(struct dwc2_hsotg *hsotg) ++{ ++ struct dwc2_core_params *p = &hsotg->params; ++ ++ dwc2_set_rk_params(hsotg); ++ p->no_clock_gating = true; ++} ++ + static void dwc2_set_ltq_params(struct dwc2_hsotg *hsotg) + { + struct dwc2_core_params *p = &hsotg->params; +@@ -277,6 +285,7 @@ const struct of_device_id dwc2_of_match_table[] = { + { .compatible = "ingenic,x1830-otg", .data = dwc2_set_x1600_params }, + { .compatible = "ingenic,x2000-otg", .data = dwc2_set_x2000_params }, + { .compatible = "rockchip,rk3066-usb", .data = dwc2_set_rk_params }, ++ { .compatible = "rockchip,rk3228-usb", .data = dwc2_set_rk3228_params }, + { .compatible = "lantiq,arx100-usb", .data = dwc2_set_ltq_params }, + { .compatible = "lantiq,xrx200-usb", .data = dwc2_set_ltq_params }, + { .compatible = "snps,dwc2" }, diff --git a/patch/kernel/archive/rockchip-6.7/series.conf b/patch/kernel/archive/rockchip-6.7/series.conf index 2fea9a0341..7283ce7a57 100644 --- a/patch/kernel/archive/rockchip-6.7/series.conf +++ b/patch/kernel/archive/rockchip-6.7/series.conf @@ -46,6 +46,7 @@ patches.armbian/ir-keymap-xt-q8l-v10.patch patches.armbian/misc-tinkerboard-spi-interface.patch patches.armbian/mmc-tinkerboard-sdmmc-reboot-fix.patch + patches.armbian/rk322x-dwc2-no-clock-gating.patch patches.armbian/rk322x-dmc-driver-01-sipv2-calls.patch patches.armbian/rk322x-dmc-driver-02-sip-constants.patch patches.armbian/rk322x-dmc-driver-03-dfi-driver.patch