linux-pine64-pinephonepro: Linux 7.2

Signed-off-by: Rudraksha Gupta <guptarud@gmail.com>
Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/9440>
This commit is contained in:
Rudraksha Gupta
2026-08-27 21:27:51 -07:00
parent 68dc919488
commit 4b5d202c15
93 changed files with 1190 additions and 854 deletions
@@ -1,5 +1,7 @@
From aec579307052b49a84960b2570c25f99929a1802 Mon Sep 17 00:00:00 2001
From: Dummy <dummy@gmail.com>
Subject: [PATCH] arm64: dts: rk3399-pinephone-pro: Keep modem regulators
Date: Thu, 27 Aug 2026 20:07:31 -0700
Subject: [PATCH 90/90] arm64: dts: rk3399-pinephone-pro: Keep modem regulators
always-on
The vcc_4g and vcc_4g_5v regulators power the EG25 modem. Mark them
@@ -9,7 +11,7 @@ always-on so the modem is powered at boot when using eg25-manager.
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
index 7a3fa599f541..9afef750bb9b 100644
index 7a3fa599f541..4d4888812bed 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts
@@ -430,6 +430,7 @@ vcc_4g_5v: regulator-vcc-4g-5v {
@@ -29,5 +31,5 @@ index 7a3fa599f541..9afef750bb9b 100644
vcc1v8_codec: regulator-vcc1v8-codec {
--
2.39.5
2.55.0
@@ -1,7 +1,7 @@
maintainer="Rudraksha Gupta <guptarud@gmail.com>"
pkgname=linux-pine64-pinephonepro
pkgver=7.1
pkgrel=1
pkgver=7.2
pkgrel=0
pkgdesc="Mainline kernel for the Pinephone Pro"
arch="aarch64"
_flavor="${pkgname#linux-}"
@@ -41,15 +41,62 @@ case "$CARCH" in
arm*) _carch="arm" ;;
esac
# Currently, the megi kernel is the most up-to-date pinephone pro kernel. As postmarketOS doesn't want to use the Megi kernel directly, we can strip the Megi kernel down to it's essentials by doing the following:
# Strip down Megi kernel to just the PPP
#
# git clone https://codeberg.org/megi/linux.git --branch orange-pi-7.1
# git switch -c ppp-7.1
# git reset --hard 8cd9520d35a6c38db6567e97dd93b1f11f185dc6 # v7.1
# git clone https://codeberg.org/megi/linux.git --branch orange-pi-7.2
# cd linux
# git switch -c ppp-7.2
# git reset --hard 8d3ae59288f1e7d58d76558a6ee96d533bc5019f # v7.2
#
# cherry pick and make sure to fix/skip conflicts...
# cherry pick. Two lists: subjects to skip, and the subsystem tokens the pinephone pro
# needs, matched against the second-to-last colon segment of the subject.
#
# git cherry-pick $(git log --reverse --format='%H%x09%s' HEAD..orange-pi-7.1 | awk -F'\t' '{n=split($2,a,":"); s=a[n-1]; gsub(/^ +| +$/,"",s); if(s ~/^(arasan|cdn-dp|displayport|dwc3|fusb302|gigadevice|imx258|phy-rockchip-inno-usb2|rk3399|rk3399-pinephone-pro|rk3399-s|rk818|rk818-battery|rk818-charger|rockchip|rockchip-inno-usb2|rt5640|supply|tcpm|typec-extcon|rk8xx|rk818_battery|rockchip-typec)$/) print $1}')
# cat > /tmp/ppp-skip <<'EOF'
# Fix mpu6500 mount matrix
# Drop the redundant CDN DP to Type-C PHY graph link
# Give the rk3399 ISPs their QoS generators
# Add OV8858 power supplies
# Add speaker amplifier supply
# Drop unusable 800 MHz GPU OPP
# Wire up UART DMA channels
# Do not log expected unplug races as errors
# Emit shield-pixel PDAF data
# EOF
#
# cat > /tmp/ppp-keep <<'EOF'
# arasan
# cdn-dp
# displayport
# dwc3
# fusb302
# gigadevice
# imx258
# phy-rockchip-inno-usb2
# rk3399
# rk3399-pinephone-pro
# rk3399-s
# rk818
# rk818-battery
# rk818-charger
# rockchip
# rockchip-inno-usb2
# rt5640
# supply
# tcpm
# typec-extcon
# rk8xx
# rk818_battery
# rockchip-typec
# EOF
#
# git log --reverse --format='%H%x09%s' HEAD..orange-pi-7.2 |
# grep -vFf /tmp/ppp-skip |
# awk -F'\t' 'NR==FNR { keep[$0]; next }
# { n = split($2, a, ":"); s = a[n-1]; gsub(/^ +| +$/, "", s)
# if (s in keep) print $1 }' /tmp/ppp-keep - > /tmp/ppp-picks
#
# wc -l < /tmp/ppp-picks
# git cherry-pick $(cat /tmp/ppp-picks)
#
# keep modem always on...
#
@@ -88,97 +135,105 @@ esac
# Source
_config="config-$_flavor.$CARCH"
case $pkgver in
*.*.*) _kernver=${pkgver%.0};;
*.*) _kernver=$pkgver;;
esac
source="
ppp-v7.1.tar.gz::https://github.com/torvalds/linux/archive/refs/tags/v7.1.tar.gz
https://cdn.kernel.org/pub/linux/kernel/v${_kernver%%.*}.x/linux-${pkgver//_/-}.tar.xz
config-$_flavor.aarch64
megi_patches/0001-ASoC-codecs-rt5640-Fix-output-mixer-input-channel-li.patch
megi_patches/0002-ASoC-codecs-rt5640-Fix-hpout-restore-when-lout-is-en.patch
megi_patches/0003-ASoC-codecs-rt5640-Add-input-mixer-input-volume-cont.patch
megi_patches/0004-ASoC-codecs-rt5640-Allow-to-control-single-ended-dif.patch
megi_patches/0005-ASoC-codecs-rt5640-Keep-the-codec-enabled-when-idle.patch
megi_patches/0006-ASoC-codecs-rt5640-Add-support-for-power-supplies.patch
megi_patches/0007-media-imx258-Add-i2c-supply.patch
megi_patches/0008-media-imx258-Add-reset-gpio.patch
megi_patches/0009-media-imx258-Drop-interface-speed-to-1224-mbps.patch
megi_patches/0010-DEBUG-media-imx258-Add-debug-register-access.patch
megi_patches/0001-media-imx258-Add-i2c-supply.patch
megi_patches/0002-media-imx258-Add-reset-gpio.patch
megi_patches/0003-media-imx258-Drop-interface-speed-to-1224-mbps.patch
megi_patches/0004-media-imx258-Add-debug-register-access.patch
megi_patches/0005-ASoC-codecs-rt5640-Fix-output-mixer-input-channel-li.patch
megi_patches/0006-ASoC-codecs-rt5640-Fix-hpout-restore-when-lout-is-en.patch
megi_patches/0007-ASoC-codecs-rt5640-Add-input-mixer-input-volume-cont.patch
megi_patches/0008-ASoC-codecs-rt5640-Allow-to-control-single-ended-dif.patch
megi_patches/0009-ASoC-codecs-rt5640-Keep-the-codec-enabled-when-idle.patch
megi_patches/0010-ASoC-codecs-rt5640-Add-support-for-power-supplies.patch
megi_patches/0011-ASoC-rockchip-Fix-doubling-of-playback-speed-after-s.patch
megi_patches/0012-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch
megi_patches/0013-thermal-rockchip-Add-support-for-RV1106-SoC.patch
megi_patches/0014-soc-rockchip-Add-support-for-power-monitoring-driver.patch
megi_patches/0015-rtc-rockchip-Add-support-for-RTC-present-in-RV1106-S.patch
megi_patches/0016-thermal-rockchip-Add-support-for-RK3506.patch
megi_patches/0017-mtd-spi-nor-gigadevice-Add-support-for-gd25lq128e.patch
megi_patches/0018-clk-rk3399-Export-SCLK_CIF_OUT_SRC-to-device-tree.patch
megi_patches/0019-clk-rockchip-rk3399-Don-t-allow-to-reparent-dclk_vop.patch
megi_patches/0020-power-supply-Add-support-for-USB_BC_ENABLED-and-USB_.patch
megi_patches/0021-mfd-rk8xx-Enable-rk808-clkout2-function.patch
megi_patches/0022-power-supply-rk818_battery-Add-battery-charger-drive.patch
megi_patches/0023-power-supply-rk818_battery-Add-code-docs-for-the-HW-.patch
megi_patches/0024-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch
megi_patches/0025-usb-typec-altmodes-displayport-Respect-DP_CAP_RECEPT.patch
megi_patches/0026-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch
megi_patches/0027-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch
megi_patches/0028-usb-typec-fusb302-Slightly-increase-wait-time-for-BC.patch
megi_patches/0029-usb-typec-fusb302-Set-the-current-before-enabling-pu.patch
megi_patches/0030-usb-typec-fusb302-Retry-reading-of-CC-pins-status-if.patch
megi_patches/0031-usb-typec-fusb302-Update-VBUS-state-even-if-VBUS-int.patch
megi_patches/0032-usb-typec-fusb302-Add-OF-extcon-support.patch
megi_patches/0033-usb-typec-fusb302-Fix-register-definitions.patch
megi_patches/0034-usb-typec-fusb302-Clear-interrupts-before-we-start-t.patch
megi_patches/0035-usb-typec-fusb302-Turn-off-VBUS-and-VCONN-on-shutdow.patch
megi_patches/0036-phy-rockchip-inno-usb2-Add-support-for-RV1106-RV1103.patch
megi_patches/0037-phy-rockchip-inno-usb2-Add-support-for-RK3506.patch
megi_patches/0038-phy-rockchip-inno-usb2-Add-PHY-tuning-for-rk3566-rk3.patch
megi_patches/0039-drm-rockchip-cdn-dp-Disable-CDN-DP-on-disconnect.patch
megi_patches/0040-phy-rockchip-inno-usb2-Decrease-delay-between-port-i.patch
megi_patches/0041-phy-rockchip-inno-usb2-More-robust-charger-detection.patch
megi_patches/0042-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch
megi_patches/0043-usb-dwc3-Always-disable-SUSPHY-when-entering-a-role.patch
megi_patches/0044-usb-dwc3-Track-cable-connection-state-separately-fro.patch
megi_patches/0045-usb-dwc3-Power-cycle-USB3-PHY-on-role-connection-cha.patch
megi_patches/0046-usb-dwc3-Register-the-role-even-when-no-cable-is-con.patch
megi_patches/0047-phy-rockchip-inno-usb2-Set-up-charger-detection-mode.patch
megi_patches/0048-usb-dwc3-Do-not-re-register-the-gadget-on-cable-even.patch
megi_patches/0049-phy-rockchip-typec-Support-a-Type-C-orientation-swit.patch
megi_patches/0050-phy-rockchip-typec-Support-a-Type-C-mode-mux.patch
megi_patches/0051-phy-rockchip-typec-Publish-the-DP-lane-count.patch
megi_patches/0052-drm-rockchip-cdn-dp-Support-ports-driven-by-a-Type-C.patch
megi_patches/0053-phy-rockchip-inno-usb2-Learn-the-host-role-from-phy_.patch
megi_patches/0054-usb-dwc3-Tell-the-UDC-core-when-there-is-no-cable.patch
megi_patches/0055-phy-rockchip-inno-usb2-Do-not-run-charger-detection-.patch
megi_patches/0056-usb-dwc3-Set-the-PHY-mode-before-starting-the-host.patch
megi_patches/0057-usb-dwc3-Do-not-connect-the-gadget-while-no-cable-is.patch
megi_patches/0058-phy-rockchip-inno-usb2-Power-the-PHY-up-before-the-h.patch
megi_patches/0059-usb-dwc3-Require-MPS-aligned-OUT-buffers.patch
megi_patches/0060-usb-typec-displayport-Update-the-mux-before-signalli.patch
megi_patches/0061-arm64-dts-rockchip-rk3399-Disable-debug-nodes.patch
megi_patches/0062-arm64-dts-rockchip-rk3399-Add-reboot-mode-driver.patch
megi_patches/0063-arm64-dts-rockchip-rk3399-Power-cycle-the-USB3-PHY-o.patch
megi_patches/0064-arm64-dts-rockchip-rk3399-Add-dmc_opp_table.patch
megi_patches/0065-arm64-dts-rockchip-rk3399-s-Add-DMC-table.patch
megi_patches/0066-arm64-dts-rockchip-rk3399-Number-the-CDN-DP-ports.patch
megi_patches/0067-arm64-dts-rockchip-rk3399-pinephone-pro-Add-Type-C-p.patch
megi_patches/0068-arm64-dts-rockchip-rk3399-pinephone-pro-Add-internal.patch
megi_patches/0069-arm64-dts-rockchip-rk3399-pinephone-pro-Add-battery-.patch
megi_patches/0070-arm64-dts-rockchip-rk3399-pinephone-pro-Add-sound-su.patch
megi_patches/0071-arm64-dts-rockchip-rk3399-pinephone-pro-Add-modem-su.patch
megi_patches/0072-arm64-dts-rockchip-rk3399-pinephone-pro-Change-modem.patch
megi_patches/0073-arm64-dts-rockchip-rk3399-pinephone-pro-Add-light-pr.patch
megi_patches/0074-arm64-dts-rockchip-rk3399-pinephone-pro-Add-I2C-supp.patch
megi_patches/0075-arm64-dts-rockchip-rk3399-pinephone-pro-Add-magnetom.patch
megi_patches/0076-arm64-dts-rockchip-rk3399-pinephone-pro-Add-mount-ma.patch
megi_patches/0077-arm64-dts-rockchip-rk3399-pinephone-pro-Enable-POGO-.patch
megi_patches/0078-arm64-dts-rockchip-rk3399-pinephone-pro-Add-pinephon.patch
megi_patches/0079-arm64-dts-rockchip-rk3399-pinephone-pro-Switch-LED-b.patch
megi_patches/0080-arm64-dts-rockchip-rk3399-pinephone-pro-Pre-configur.patch
megi_patches/0081-arm64-dts-rockchip-rk3399-pinephone-pro-Improve-SPI-.patch
megi_patches/0082-arm64-dts-rockchip-rk3399-pinephone-pro-Assign-power.patch
megi_patches/0083-arm64-dts-rockchip-rk3399-pinephone-pro-Add-camera-f.patch
megi_patches/0084-arm64-dts-rockchip-rk3399-pinephone-pro-Disable-inte.patch
megi_patches/0012-power-supply-Add-support-for-USB_BC_ENABLED-and-USB_.patch
megi_patches/0013-mfd-rk8xx-Enable-rk808-clkout2-function.patch
megi_patches/0014-power-supply-rk818_battery-Add-battery-charger-drive.patch
megi_patches/0015-power-supply-rk818_battery-Add-code-docs-for-the-HW-.patch
megi_patches/0016-power-supply-rk818_battery-Don-t-override-configured.patch
megi_patches/0017-power-supply-rk818_battery-Scale-charge-current-by-t.patch
megi_patches/0018-power-supply-rk818_battery-Scale-termination-current.patch
megi_patches/0019-power-supply-rk818_battery-Compensate-for-IR-drop-wh.patch
megi_patches/0020-power-supply-rk818_battery-Rework-the-low-voltage-mo.patch
megi_patches/0021-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch
megi_patches/0022-usb-typec-altmodes-displayport-Respect-DP_CAP_RECEPT.patch
megi_patches/0023-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch
megi_patches/0024-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch
megi_patches/0025-usb-typec-fusb302-Slightly-increase-wait-time-for-BC.patch
megi_patches/0026-usb-typec-fusb302-Set-the-current-before-enabling-pu.patch
megi_patches/0027-usb-typec-fusb302-Retry-reading-of-CC-pins-status-if.patch
megi_patches/0028-usb-typec-fusb302-Update-VBUS-state-even-if-VBUS-int.patch
megi_patches/0029-usb-typec-fusb302-Add-OF-extcon-support.patch
megi_patches/0030-usb-typec-fusb302-Fix-register-definitions.patch
megi_patches/0031-usb-typec-fusb302-Clear-interrupts-before-we-start-t.patch
megi_patches/0032-usb-typec-fusb302-Turn-off-VBUS-and-VCONN-on-shutdow.patch
megi_patches/0033-thermal-rockchip-Add-support-for-RV1106-SoC.patch
megi_patches/0034-soc-rockchip-Add-support-for-power-monitoring-driver.patch
megi_patches/0035-rtc-rockchip-Add-support-for-RTC-present-in-RV1106-S.patch
megi_patches/0036-thermal-rockchip-Add-support-for-RK3506.patch
megi_patches/0037-arm64-dts-rockchip-rk3399-Disable-debug-nodes.patch
megi_patches/0038-arm64-dts-rockchip-rk3399-Add-reboot-mode-driver.patch
megi_patches/0039-arm64-dts-rockchip-rk3399-Power-cycle-the-USB3-PHY-o.patch
megi_patches/0040-arm64-dts-rockchip-rk3399-Add-dmc_opp_table.patch
megi_patches/0041-arm64-dts-rockchip-rk3399-s-Add-DMC-table.patch
megi_patches/0042-arm64-dts-rockchip-rk3399-Number-the-CDN-DP-ports.patch
megi_patches/0043-arm64-dts-rockchip-rk3399-pinephone-pro-Add-Type-C-p.patch
megi_patches/0044-arm64-dts-rockchip-rk3399-pinephone-pro-Add-internal.patch
megi_patches/0045-arm64-dts-rockchip-rk3399-pinephone-pro-Add-battery-.patch
megi_patches/0046-arm64-dts-rockchip-rk3399-pinephone-pro-Add-sound-su.patch
megi_patches/0047-arm64-dts-rockchip-rk3399-pinephone-pro-Add-modem-su.patch
megi_patches/0048-arm64-dts-rockchip-rk3399-pinephone-pro-Change-modem.patch
megi_patches/0049-arm64-dts-rockchip-rk3399-pinephone-pro-Add-light-pr.patch
megi_patches/0050-arm64-dts-rockchip-rk3399-pinephone-pro-Add-I2C-supp.patch
megi_patches/0051-arm64-dts-rockchip-rk3399-pinephone-pro-Add-magnetom.patch
megi_patches/0052-arm64-dts-rockchip-rk3399-pinephone-pro-Add-mount-ma.patch
megi_patches/0053-arm64-dts-rockchip-rk3399-pinephone-pro-Enable-POGO-.patch
megi_patches/0054-arm64-dts-rockchip-rk3399-pinephone-pro-Add-pinephon.patch
megi_patches/0055-arm64-dts-rockchip-rk3399-pinephone-pro-Switch-LED-b.patch
megi_patches/0056-arm64-dts-rockchip-rk3399-pinephone-pro-Pre-configur.patch
megi_patches/0057-arm64-dts-rockchip-rk3399-pinephone-pro-Improve-SPI-.patch
megi_patches/0058-arm64-dts-rockchip-rk3399-pinephone-pro-Assign-power.patch
megi_patches/0059-arm64-dts-rockchip-rk3399-pinephone-pro-Add-camera-f.patch
megi_patches/0060-arm64-dts-rockchip-rk3399-pinephone-pro-Disable-inte.patch
megi_patches/0061-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch
megi_patches/0062-phy-rockchip-inno-usb2-Add-support-for-RV1106-RV1103.patch
megi_patches/0063-phy-rockchip-inno-usb2-Add-support-for-RK3506.patch
megi_patches/0064-phy-rockchip-inno-usb2-Add-PHY-tuning-for-rk3566-rk3.patch
megi_patches/0065-drm-rockchip-cdn-dp-Disable-CDN-DP-on-disconnect.patch
megi_patches/0066-phy-rockchip-inno-usb2-Decrease-delay-between-port-i.patch
megi_patches/0067-phy-rockchip-inno-usb2-More-robust-charger-detection.patch
megi_patches/0068-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch
megi_patches/0069-usb-dwc3-Always-disable-SUSPHY-when-entering-a-role.patch
megi_patches/0070-usb-dwc3-Track-cable-connection-state-separately-fro.patch
megi_patches/0071-usb-dwc3-Power-cycle-USB3-PHY-on-role-connection-cha.patch
megi_patches/0072-usb-dwc3-Register-the-role-even-when-no-cable-is-con.patch
megi_patches/0073-phy-rockchip-inno-usb2-Set-up-charger-detection-mode.patch
megi_patches/0074-usb-dwc3-Do-not-re-register-the-gadget-on-cable-even.patch
megi_patches/0075-phy-rockchip-typec-Support-a-Type-C-orientation-swit.patch
megi_patches/0076-phy-rockchip-typec-Support-a-Type-C-mode-mux.patch
megi_patches/0077-phy-rockchip-typec-Publish-the-DP-lane-count.patch
megi_patches/0078-drm-rockchip-cdn-dp-Support-ports-driven-by-a-Type-C.patch
megi_patches/0079-phy-rockchip-inno-usb2-Learn-the-host-role-from-phy_.patch
megi_patches/0080-usb-dwc3-Tell-the-UDC-core-when-there-is-no-cable.patch
megi_patches/0081-phy-rockchip-inno-usb2-Do-not-run-charger-detection-.patch
megi_patches/0082-usb-dwc3-Set-the-PHY-mode-before-starting-the-host.patch
megi_patches/0083-usb-dwc3-Do-not-connect-the-gadget-while-no-cable-is.patch
megi_patches/0084-phy-rockchip-inno-usb2-Power-the-PHY-up-before-the-h.patch
megi_patches/0085-usb-dwc3-Require-MPS-aligned-OUT-buffers.patch
megi_patches/0086-usb-typec-displayport-Update-the-mux-before-signalli.patch
megi_patches/0087-mtd-spi-nor-gigadevice-Add-support-for-gd25lq128e.patch
megi_patches/0088-clk-rk3399-Export-SCLK_CIF_OUT_SRC-to-device-tree.patch
megi_patches/0089-clk-rockchip-rk3399-Don-t-allow-to-reparent-dclk_vop.patch
0001-arm64-dts-rk3399-pinephone-pro-Keep-modem-regulators.patch
BTF-seg-fault.patch
"
builddir="$srcdir/linux-$pkgver"
builddir="$srcdir/linux-${_kernver//_/-}"
prepare() {
default_prepare
@@ -209,92 +264,96 @@ package() {
sha512sums="
10c0cfd70a7a5731963cb4c7538396f6ed637d7db532a1c04b00628af47f4b81ffb3d92200e64ba1ce04047e4b2e39e6845c4067762e85ad9df13f2740c10397 ppp-v7.1.tar.gz
a0de9fbc7e532e4783f7d413e8ccef24097bed2f92cd64d7315a6f7df3df89a1832587d61eab1bc428ea587a5018c6140588c46a7a919fba1d0ab6fb69687411 config-pine64-pinephonepro.aarch64
cafe0f07dab850059475c8f84df0b859d65bedda455517a5996f75d4e5f28c7fe66ac5a2b2e4ee6b46ed173819b899cc37ac08d1106bf635beab018ad636ee1e 0001-ASoC-codecs-rt5640-Fix-output-mixer-input-channel-li.patch
5db306c6728666c3e64ca28a3cc330d7452c87c9119aa8cd57a4549cee7aee1c1137dedece8c50bb58d1040bd861d7722c6341112b24699919fb5a3bd816afdb 0002-ASoC-codecs-rt5640-Fix-hpout-restore-when-lout-is-en.patch
a734d758f0e84fbd7dd3c8e7daa24ca8778af2d25e8d1df3c7e27978f616428fa57e507dede65f59dab6ce23597380b69d83fde35b549b3c0d8b55a38f58a57b 0003-ASoC-codecs-rt5640-Add-input-mixer-input-volume-cont.patch
b7b94b6b2f144932009fa94ad0e5505b5749cea446221ef94e51490117b9a747080a876d7a004a0b0829fba1e3ecbb714f867a3725e40cf51fb90ff49a7c0da9 0004-ASoC-codecs-rt5640-Allow-to-control-single-ended-dif.patch
5c8e63d2e3fe0b4805f74ad0da75159495dd82592e701160d07c4729f00e9c9de7d23dee6250fb62fbbba05c3a0ca42f6495e2f1e51fd1d330f62394003ac222 0005-ASoC-codecs-rt5640-Keep-the-codec-enabled-when-idle.patch
89c5ecda11e85c795aaf5e718b7c636ed149ca17ca71068cc329abd598edb568584db3b559f9cc4074c8eef4e4e9f749181726e416747ca9b853e6bdd30b4dd1 0006-ASoC-codecs-rt5640-Add-support-for-power-supplies.patch
0a865555b611922507021b262d5ba6f7991ddc0354a440543aa18c2ddc9c47a6807905fd0fcd23e33dfa1f93a337f016114230c472c9ee5f4d56fa45866e828f 0007-media-imx258-Add-i2c-supply.patch
a9feac6a2eaf059699584dab91665a3bcf4afce09dba8c69739c77a1fc3639d01de1dc8fd68d3593afeeac8413a1c1e37d6bf59f272e9f8e504fa67b26d07f76 0008-media-imx258-Add-reset-gpio.patch
50983f8bf418b0b602aa4fedaba273316d13eebff0c4a03f8f680851797a1f28fcf2da0ca98d1fa61cb0e3eb30a36a23b936262f426bfa38a4f43ad64116e307 0009-media-imx258-Drop-interface-speed-to-1224-mbps.patch
a7c6cde4aa77e5df3e464f7eef00859d1ea71f4874f1d447cb78dbc722691380f60aabfef39ce1e740448593a5017b50cb38d01b68ea7c279c808f5043acfce6 0010-DEBUG-media-imx258-Add-debug-register-access.patch
001b8f0c086b24acc5b53f0ce13a10d754903314b21f8fc22c45b5bd6ea719c09c2c2b51a839710e1d2fcff70f7dceeac7ac44a24fd42acb8c99cb1bb3c2023c 0011-ASoC-rockchip-Fix-doubling-of-playback-speed-after-s.patch
f0b43b03a918c66f96d6d2987762eefdd4c5a11f4252a0b977532a17a0d7a24498b10511a059dcb07f7e572cb3864599a31c1fc3ca7505727cf1e08b64a9d614 0012-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch
1bf5e2cef1ecf4d470b6ef0159fce095eee239f4c296c6bbbc14edf510fb9a20b0048ac537876c91e2cc4c0318572c2eaa727ac5ddacf3dbddea2bf0202043e0 0013-thermal-rockchip-Add-support-for-RV1106-SoC.patch
7b0e3cb86ebe501fcf82433c2cc046720f311cdeb423d3191fb472f54501e99eafecaf5da338698453e0feb6c00ed29257ecf1a5765290911d47d77467875f43 0014-soc-rockchip-Add-support-for-power-monitoring-driver.patch
67c5119ae325a9e328e5d9e92690f575d2cfd5c46304c65a4c7966330800fadd7a314fe57ba76c29970ed9afbfebbdf676e95b1a7f3a8b4328ba2dba87d7f2e3 0015-rtc-rockchip-Add-support-for-RTC-present-in-RV1106-S.patch
a9a8aa2da2f503d86681e4b61606db6bfac4622030f05ea081f4d75b05edfcf4794a3a7575de4c1c9a5025aa3f25be6fa348418f97d06c0bed88843fc2aca9c5 0016-thermal-rockchip-Add-support-for-RK3506.patch
96a56ce7aa57c8e1e04892dcf12c043143f6e0dc0affddeb4c565865358d8b51d84fb2e25ef58c9a07a684a8e43058f64dc206c1371b3b07d0e115444885469f 0017-mtd-spi-nor-gigadevice-Add-support-for-gd25lq128e.patch
c7dfed2e10fc2902647134ce09351c2567d04be3d190ecacd09f08130587311553d12831d1b0652b41eb949f0172308efaa65cda0ea0b53aeff92c007b805619 0018-clk-rk3399-Export-SCLK_CIF_OUT_SRC-to-device-tree.patch
1639b72d3552817018fb2811388d30c0c5f958ef0e14dd395962db0394bc8cdd8369d70ca494668cbad0a36e61df60cf508686ac06794639038dbc0d15382477 0019-clk-rockchip-rk3399-Don-t-allow-to-reparent-dclk_vop.patch
247a291979eafbccdfe85c99a569235f7fff860f037e2d47fd76312bb20277c0f0fa3e523be969f977657b602a88b846f2ddc058c243b64828bcca0315fe7386 0020-power-supply-Add-support-for-USB_BC_ENABLED-and-USB_.patch
888dbcd2af60be116391e9464b0915a2468fcb2661803f2df54e9df9b1d38c718eabaf704c0d9c6cbf96f73b115ed14bac0d2bbbb87617cf10181b357a2c719e 0021-mfd-rk8xx-Enable-rk808-clkout2-function.patch
73e2cadbfacb5c8e9547ca410efb6c11a9c87dc8239fd7096f2373d56a7697f19114c08811b8a01b1de5e199cbd20f9a78cc5c4e0db6830b79842a8eede9d079 0022-power-supply-rk818_battery-Add-battery-charger-drive.patch
6d7027d970a389213ef8a233c564df25e854f8635db2dbf4c14f7d29de51ad6d3d9ee61523513be71b382c2ee1d730bd32160b1809ed0dcbfec2c7b24c6547ad 0023-power-supply-rk818_battery-Add-code-docs-for-the-HW-.patch
b443aaa45d2bcb98b2b6c43577722fb718198f06baf126e2c1ea2d636a8874787a972c45d0bf83bdceb783920280a7cfeeb7e8d18b2b2634f685e974cc362e97 0024-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch
db34fb8ee7c4ba3baba480ccbe7df866fe7f5277a80739f7eeeadde80c1a4fa103df4f5995ba9660de725ece6aabeaefc302db39d50b6fa8c7fe3fdb212c6e26 0025-usb-typec-altmodes-displayport-Respect-DP_CAP_RECEPT.patch
98229ad878e1158c887c63c1cfe72b7ca7084bf6b42f092005ba1e327307c20e7c77246cb9258ad2f0813722a91e6023f45553230bff7d248c1923c1452a94c4 0026-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch
89edc9f8935f6905e37e18a554787cf5262624f4c5b9e4dfaa984022bdfb1e0293e95bf731f27ca7640f352167676924b720d9a6a09bded813c07fd152878f63 0027-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch
196080cfeee98682195153f0918edbd08b302e5bad5afc9860747b0b6b90159a133813e0b6940ffabf9a88be36088a680f647cd5b611083c9139ea123989783f 0028-usb-typec-fusb302-Slightly-increase-wait-time-for-BC.patch
dc4d378cd114949ad51f47a8da7deb9cda63a75432f6f386086d41fa0ebe126657da270af89df84495c1777be7e5041274a780877b2ce6ca387e35aaaca7a46d 0029-usb-typec-fusb302-Set-the-current-before-enabling-pu.patch
67049fa20660f5924cf06001ac9e55363f337e4cda084f79b828a9863627893c5a3f4d5cc809d613f60d792540eee579097b652bf49dfee8c9840892485beaad 0030-usb-typec-fusb302-Retry-reading-of-CC-pins-status-if.patch
3bf2d0ac9c737eb761461ab5eb5597c05ef8b368a69b9b0c48ae2b68e58da2d432cd9060fea80c2541b7f453c6fc93657ef94aa073a893b48a7407632d46820d 0031-usb-typec-fusb302-Update-VBUS-state-even-if-VBUS-int.patch
d9b11a9acbbb64668332e202c786457f370c7f9d2bdedf6144b434d992d067ada00ab027067da0a597277c726ccb7ae68d49580848a95ea88775f0a6837586f7 0032-usb-typec-fusb302-Add-OF-extcon-support.patch
4946338c55952347050ac2c3cb814ce778b8c9933a1974ed093daf82e8234b0a2d8ccb808c9beb29451d41c80a6cc03917a9d1a2a72a374a47374d20d3ca460f 0033-usb-typec-fusb302-Fix-register-definitions.patch
f72b87321bb0ff45e58e729587d6edf97604f1cbf3b5c82e9b26289096f752b0725e800a22525ab662f378eca2637463e3ceb7e213b86f6f5293705dd509d119 0034-usb-typec-fusb302-Clear-interrupts-before-we-start-t.patch
4ae24e87a3b514a8fbb41cf47d5d00292bc399ed8fd1299ef4dc4990c31143c5c6d3fbc6c6480089c492b3988f743a86b30420c91a1d551968a3758ea9538b03 0035-usb-typec-fusb302-Turn-off-VBUS-and-VCONN-on-shutdow.patch
065427abc79c435762e25a40cc13b35a14feeca318f767d0384970cf57e7c785c796923bd891746edd0497079941313b0b7839c7988f63e243c8166a0c8f3579 0036-phy-rockchip-inno-usb2-Add-support-for-RV1106-RV1103.patch
9115fe459431dac6558d60f9e6ebab1fef726413c8a3bdb88b21e402f2b1ccd0c485ce65aa9feaca948b2ef88bff6ea38973c761bac0f7dccb7b019938c37ae5 0037-phy-rockchip-inno-usb2-Add-support-for-RK3506.patch
2abd784fd1a6abe3ca5da3919f7a9b7617379d06340cc9549dbf3dee2dcf095fb5aa3735d08e93f4363247667ba14d9f6c96e414afa965b65e12fd00af08bd48 0038-phy-rockchip-inno-usb2-Add-PHY-tuning-for-rk3566-rk3.patch
60656a8bdf90e92661d5d2b69aad78489955e5a82edbee67b385a3285bbb59d59c615e47ad83f993ed3c5b4ee6f39958e5199492d41cf652e333473d27136855 0039-drm-rockchip-cdn-dp-Disable-CDN-DP-on-disconnect.patch
a941594dd09c6468c6b89ba56f8ba127aedc15228904667f521cfbf9d25dafac8dc8e8ecddea3c86af2a1305d2fb40035f85bf3b559a5574bad3e0362649f290 0040-phy-rockchip-inno-usb2-Decrease-delay-between-port-i.patch
b0093aec9b85ef54400585c23b9a1cc2b31598c847cb998ae03f277eaa81a0cdf8c979ac7b8d581b4dff7bd70c601d812eb6ef7bff543fbc00f5ba9436cea748 0041-phy-rockchip-inno-usb2-More-robust-charger-detection.patch
32e6b984e14996387c232ac0ac708d7eaf75d1fc6de3ec5df53a110368be270177cd02253523c66163f6d0c227b0b6a18d171411d76c2757bbe4dd13facb8920 0042-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch
7b4ce3f693b3d1731693c79fdf114de0c67b5a74406b3b46b1bd133babb6e5a20c3e2466feb33239dfc9dd08f9db68fc018c8a80a1115dfd2fd8812b7da017fa 0043-usb-dwc3-Always-disable-SUSPHY-when-entering-a-role.patch
302dad47110479739cb5348c938ad9c9c3b41d0ce46c45ee49211cf71578ca2342edaea664b52d3855fd5a7e8ae7fd850d80bd080a43423c349254e47ff79b11 0044-usb-dwc3-Track-cable-connection-state-separately-fro.patch
e08557f8efe8f730d358f247771d32d3001ea3337db950f3a785b632be8098044933276f2b1a5b376270b88bb21345c056ccb818b74e59b93fb291d062edc85c 0045-usb-dwc3-Power-cycle-USB3-PHY-on-role-connection-cha.patch
107bdb8b4d289306b8f4be1f7088a44a239e8e66cc286d9108f14281d7bb64a5defb54909ec9a356b7bf60aa83152e5c9ac9c5aa8f872a69cf201a5b9c8cff69 0046-usb-dwc3-Register-the-role-even-when-no-cable-is-con.patch
46a8452081223bdf5864c86f50e070a796b7d495b77ad861804e862d2659df29f9c17130bc9ff438b5c9a8cb8df4c3c55191eecb339c5691ad6d9c341c1d6293 0047-phy-rockchip-inno-usb2-Set-up-charger-detection-mode.patch
ec262e3094fe7edac553d8b29662182ca9b617bba266c1e959b04fea1c358dc26be123cb0e5e286e08aac5210f8ba26172230bc9508b8685a293d0349276dc6a 0048-usb-dwc3-Do-not-re-register-the-gadget-on-cable-even.patch
3561f087e06bb61eb1f3c10250120bf747e879aa7aebe039f148d20a8960c9b545f90a882960bc91a4eda593092dcf36de34e81074ed2ccbadb37a9cc2c04731 0049-phy-rockchip-typec-Support-a-Type-C-orientation-swit.patch
cf24ee439036f001d66a6c9c8662f8cafcb0e3b068269782de00b8a1fb14a58b39b66a17078bc0d9c22c8e76093633aeae553c3c05aec803e08b96a40134a3f6 0050-phy-rockchip-typec-Support-a-Type-C-mode-mux.patch
5d659877cb2fd5f099eac102ef2f6da7975215bfbf52b8790999cb11a8be06f37c7c87d26e6fa1c38d6c803e6988913bfb91b41948585fca1d3513d2471d0c77 0051-phy-rockchip-typec-Publish-the-DP-lane-count.patch
76d1b5efc343564f7dde1dbcb8f46a564879395aa12b3b6aa21aaf1ea018ee14c5c2a0dea6cb13d5609a716b623bf008aa11e29021363a57dc33fdf762f6fd43 0052-drm-rockchip-cdn-dp-Support-ports-driven-by-a-Type-C.patch
b6f71b575b69b5a44892bfd51253fff8e422d701d95e1b4cf318b1263ed3227a7e861f181458f37af933e26d3756e985646e2b9f9cec654ce0ac419f822d8a04 0053-phy-rockchip-inno-usb2-Learn-the-host-role-from-phy_.patch
cfedc21450d5ac15411f0703179f312dcf1a7d179d8983a269b69e06b2c07d1292abbb9a741caf7e18d091bac47d87bd0be5382a1b0077136ee67e4fa8e25b0e 0054-usb-dwc3-Tell-the-UDC-core-when-there-is-no-cable.patch
c79dc3ff0ad97514df04bb295f1a33d022c3200b02c21162a2cd9c1da453c935be3d49486904741968dfffda18ff7c273b783eac3ccab875ca99964c07b4eacc 0055-phy-rockchip-inno-usb2-Do-not-run-charger-detection-.patch
56f43f4f6448506d7ddce07b5cb0bcfa8a82fd799da17c7be0c9cec0d7194035455b9850a9637ad1226f80fa01b6a6834c33e3bc50da855e5121160eda806a44 0056-usb-dwc3-Set-the-PHY-mode-before-starting-the-host.patch
86a7b1e9f59e1532c985d3a4a1edd196e4ab47b3047627306e9e7fe122bf3f7fa6a2049f9467d30a221c3d65277600e91d71e9fa295c388117b379456adc2970 0057-usb-dwc3-Do-not-connect-the-gadget-while-no-cable-is.patch
9e5ad8a5f08e6419f6bd25162fe4e542b2cc33890ef761e35fac4fb324f10d5df96fe0f5be3458ee636dd57f05f90ced31d01c084a3580beed7c1c71573f7b23 0058-phy-rockchip-inno-usb2-Power-the-PHY-up-before-the-h.patch
2c6d05ddb458189aedb70f8ba6036fadc942f1b2634003c2f2325625a8a1a4afa933c927d893b4fdac406b593cbeb321320be6f835ca7cb0268448738f850ffc 0059-usb-dwc3-Require-MPS-aligned-OUT-buffers.patch
d40ca07d6379fedd78858097c4e57fea2a52a24254be0a534874c641d1e9ed5e1ee96755420fd45bea1ec538b0340f326712230d5fb1377a07521c8c6c93debf 0060-usb-typec-displayport-Update-the-mux-before-signalli.patch
36a5a4ca60c45161e7913edde968d87884d6c552d6f0bc119a9b6ff3c0d0d3e750410df4cd891c0233f56c3a5b80ef7a7aadb34ec4936dce1f399301fa993001 0061-arm64-dts-rockchip-rk3399-Disable-debug-nodes.patch
15998054b6521020e4895c2024ce2ad9db3650220ee0d3eb693fa44c72086520eefa592c824b015d514b593ca7ded1d3c5b6e1f7146b1133598cae13b4994c62 0062-arm64-dts-rockchip-rk3399-Add-reboot-mode-driver.patch
60904d0dd44dd3740991dcdfb752d7d78470a9814414d407e7ca2de0d4061716deb1c70e08ae1937684e05f5ef6ba4fe57fbcdea69374053906ee3753d11fc63 0063-arm64-dts-rockchip-rk3399-Power-cycle-the-USB3-PHY-o.patch
dff55b92a62499fe5c46d68debeac92213038058b8fd19652b4ae7cc5980205bdb560e568cba4c8109ae298fceeb79c7815f0f405501c8fbccdb759d828bd5f5 0064-arm64-dts-rockchip-rk3399-Add-dmc_opp_table.patch
9f8b94efc2d5c0a6602122731e70a29f8439d2b4861211da189cdb845f707530bd7c73956ad85c94aeb94ec8b62918f8f6b17687b84470087580b3a15c4a5a55 0065-arm64-dts-rockchip-rk3399-s-Add-DMC-table.patch
9ea12b3c4ccc408cb07116da003186ac2060cece7c4847f55489c6fd0cae6035a2555eebf0bbbb54d674d44fc5db0e1bbe1a2ded48dc5ec2a6a3df4c2e2ca185 0066-arm64-dts-rockchip-rk3399-Number-the-CDN-DP-ports.patch
1ecce40405e69b9fec96d1535622ca71ccb5fc76753b459c9e321c7903178623ddc31f5527ca1949b071d47ce1f73dbce74dea8059bc1b683d253f83d9130c80 0067-arm64-dts-rockchip-rk3399-pinephone-pro-Add-Type-C-p.patch
2f1dcbe2f0538cdc4c01aa2992afc1f26d1599e1505780b286c1e645a81be5ed1f44288bf5024c2e3178e2f438f38b7220c76f1fce842548cdcec37728d18b9f 0068-arm64-dts-rockchip-rk3399-pinephone-pro-Add-internal.patch
479cfb8e65ccd95d656ff0fe212aa31cfdd7f3e298d612da27063dcff7e62324210b627e7ab210a273142d3f15384b5f2cadfb1983f3864145355421f99f0957 0069-arm64-dts-rockchip-rk3399-pinephone-pro-Add-battery-.patch
bdf826beedcfe769acd7475f7a30c3adc8225fa103dd1e37c5a31d750fea3044b077f4903986c0ee3d3102e79948f4375bed7a674498e4c21b34b3ba44e54ba1 0070-arm64-dts-rockchip-rk3399-pinephone-pro-Add-sound-su.patch
443688c9b00de95b9bd23fbc08741ef488c849211151f7f8bae136149e0f0aa562d2353875120333e2e7f3e187abfd0bebdc1b2b006d725d33d638e0e20496f6 0071-arm64-dts-rockchip-rk3399-pinephone-pro-Add-modem-su.patch
eb66518e6876badf3ef3bc766328ff621031194dc067ecea5a0ed629702c08cd5f964d3c25c2a1aae9fc5b13615f212c7150ea0c2afe33b0427a1554a6bd4029 0072-arm64-dts-rockchip-rk3399-pinephone-pro-Change-modem.patch
70f83b6210e991b546c70c594e8d6f28ebc557c301acf1ef9f0d1df625dd709f3744ae1738865626ae7ca5b6ce9682bfbc052766bb6989d67b261abd6606ce85 0073-arm64-dts-rockchip-rk3399-pinephone-pro-Add-light-pr.patch
077deb29bf5182a0f1689bc7e6da41f553cc7a2c8a2ef96a2b111f9d5e9e2ba8f26d3228af20f79d15f45c0a69aa8f60733a422fad1895700a299a8aad7d1e51 0074-arm64-dts-rockchip-rk3399-pinephone-pro-Add-I2C-supp.patch
fbb3e8fa505f8a97d512834dd75b849cad5aed4d357dbbe2904d9b435bb8f19c3863ef7417c4ef4afeefc224bd4ad6eab74f4bc00ac66b69aaccb001c29fba71 0075-arm64-dts-rockchip-rk3399-pinephone-pro-Add-magnetom.patch
2d79639df7928f464217e71e4219a40fa082e36bb410b3d1fa12bb1ab6246199c4976fba84fa32e621939c0c37b08929d2be7380756aec40b8bcaff91298e81d 0076-arm64-dts-rockchip-rk3399-pinephone-pro-Add-mount-ma.patch
e1e1fc09232f21c69b8a2613d3da6063d669f8f97a340954702e7227214f1a6c4adc866420618cd365753767a0da93e52ac40c3575e5beac9dc778c93895b622 0077-arm64-dts-rockchip-rk3399-pinephone-pro-Enable-POGO-.patch
ac1e93b71deb4cf8a070c3380061b46e1e1cea094346d02d5f8ed326d3f0e5316ca4ebdae7677ceea3d4456a580542f0075d29df50d1a37d8817392e59e5d380 0078-arm64-dts-rockchip-rk3399-pinephone-pro-Add-pinephon.patch
8a160ffa6e95afbf58608f030c3ca3a7d7de298f7a20ce8e298eba54576a7f99ffff6389e36a4dc5d8bb1110e112c72e0718e4d8e88fe4049019119ba0c1a8fa 0079-arm64-dts-rockchip-rk3399-pinephone-pro-Switch-LED-b.patch
5308f80bd8fdaa3d76f26bd278f2d027689b5e75a8d0e6a00e13b6c056bdd1b30875105e2afbe4daa47f282ab3312df3747e74368601f745b394f2f5874d018a 0080-arm64-dts-rockchip-rk3399-pinephone-pro-Pre-configur.patch
9f61f0602d232c583ec1e447037e8f69eb89fae674e8e1cf65a187d224bc3eeb5da7ce209045c2a48508d9202b355a3ad001ed9ed365b0afdf5cf7e6b98822d3 0081-arm64-dts-rockchip-rk3399-pinephone-pro-Improve-SPI-.patch
04c6e3f63e897d044945cf05f7a15c3d99ec0889f3518691738e84ffa115532b70215695e9e7c1b6b6c3483b872ed676cefd9cebdcf18f0e83db3d5207045813 0082-arm64-dts-rockchip-rk3399-pinephone-pro-Assign-power.patch
2baa9dc87a0f7d9f60e0f0429c83943dab6edc25e963fe70d5bf322e713217ce8285691ebbc7b6f73fd3d48a0fd36c8053f819af904753898b27cf12e8e1df54 0083-arm64-dts-rockchip-rk3399-pinephone-pro-Add-camera-f.patch
e820d9169b6854832d1a29d0c1925732155afe08e72aa865a6804ee67359137cdcbd967acee41913ef36ff1acae02346c4a5f8b07337ab4f9d56ae45b75b56f3 0084-arm64-dts-rockchip-rk3399-pinephone-pro-Disable-inte.patch
79ac34ea9e3f4e74809c5f30bc90c511a3bf02ed9c00475db2adb0b009c5609b00f14dedccafb0f9f2dea136332df8416b78920807df100faa2ce937484871d3 0001-arm64-dts-rk3399-pinephone-pro-Keep-modem-regulators.patch
e2555390d48cbbdc32a7d3f0c27599ff88f2fe3e786d1d0086caaa5b092cc3edcb6e95e2fb07034edb3793f6dc954da0662c723202eb7e2c4956c99b50919b12 BTF-seg-fault.patch
47e63679363261a864d271277340a6f2d45f544e1a056be4159df081f4f6537d0efa865c4af26611ab33a3079ee65db88ec2f6bc0e5fff43e0c043cde0cd91e1 linux-7.2.tar.xz
7701172077521d6b6a24236f928e40a5d331d8707bb8e2deda67b7a50a084889d8cecc64d6483f0a0f44d273701a0ef7c9dac79c99057a98cb8a40699f5139e4 config-pine64-pinephonepro.aarch64
3fe0328eb432feb77448edae85aa4949ee320f1cfcd058a76208fffaf1ef50ac7093e4bb9447862e90827a5e4da39fa1dbab510e59f7dd9eb22bad534b6445d5 0001-media-imx258-Add-i2c-supply.patch
f942fccb5ecff5a14ac3c865bac42bf0185155bddd2d9d27c52fe9f68fd190ccde46787260cb2daf45a9b293dd4e4749847766e50e24bd928e1ea8254db32ea4 0002-media-imx258-Add-reset-gpio.patch
b4fc06c4a6cf2283a010e56603264667f46865b2e5347444ab89698ba679934bcd48de6aba8a8a292032c2b6f45cacb88e114dcabf1ffcbc5d1b443f887fec80 0003-media-imx258-Drop-interface-speed-to-1224-mbps.patch
1588865230dbd18c04bfe48ff9bf35e363450bb09744fc743ea5311930d8f9f6e8636f46cff093b48324378dfd665bdfc32164cccbc28caa484c23a3dbdce89f 0004-media-imx258-Add-debug-register-access.patch
32772ab8e99a122ba67b86051db89828529fc8810e5a60617e118e0703b3bda3f8d6169faa1969365c927a86c05f7aacd1d620011cb1602fb324f11a98ecb6d7 0005-ASoC-codecs-rt5640-Fix-output-mixer-input-channel-li.patch
76f84a028a7c187ff2c67f9717f623b919e4186d1873577685ce893acfa44a15e76166e0aa064aa64e6bfb2a1cc113f9d9cb1593f4c0653f0867dff70389bb1e 0006-ASoC-codecs-rt5640-Fix-hpout-restore-when-lout-is-en.patch
17592c499001aaad022e9c0a5d1d02a5d05846c13b7355e3fd739d2d558339170ea9ae18ba2cb5f2faa8e1a41fad7ee720ea32310835d1065c1d5927eaaf8524 0007-ASoC-codecs-rt5640-Add-input-mixer-input-volume-cont.patch
7efe0881006074a1ebac5f1d66293533910d61b2ca6256a0f47508eddf58c5d2e96f7247cd28c79d3c89cee31a44e88d7d27bb4a230559dcfaea299e2fff4dfb 0008-ASoC-codecs-rt5640-Allow-to-control-single-ended-dif.patch
f395aaced4628ab99dc8fec856313e06a7ebcbef34a9e40dfe429f5e7aaf3464c8f80ac0e9baa305f6862757e4218b3a4534f60f25008d727e29cfac41298227 0009-ASoC-codecs-rt5640-Keep-the-codec-enabled-when-idle.patch
d9c407f0048bd54ba934c77b9ef575c30a24e9a8fe851bffe1c50b04117179099a78510d477feb9714adafa0240670ae90fe6b32e146eea4a02a794465094d3e 0010-ASoC-codecs-rt5640-Add-support-for-power-supplies.patch
8f1b5efd339111608e9fea65dedd6dffdf6afabfab77019ef1b75316de93d41f548c9508f510af9d10639af389d7085e37e766c8fb8b6fd6dcd73b0484f53bf6 0011-ASoC-rockchip-Fix-doubling-of-playback-speed-after-s.patch
6f63cb3667f7e7020d891ce96b9452411df597d6996a56c7c7886897b8a5c665e687360566ea746042b5d72485e1895d448718f532411e5d6ba044c702bcd891 0012-power-supply-Add-support-for-USB_BC_ENABLED-and-USB_.patch
ed02ada1831ec75cb9b101ee64ff4485c1c47bb7f13f754cc719d061597a34eac3eaa7eb3b702d6a4f3193aca883f37a49af086d2f11faa90470e45ad99f5e99 0013-mfd-rk8xx-Enable-rk808-clkout2-function.patch
bcded2851702019ea404dbd95d195d263d8cbaf5c1247b22c4c715361154de3aed4e85a23aef788026e7a2e2f889c4610ff27df7a42e66b753ac1313ae6dca44 0014-power-supply-rk818_battery-Add-battery-charger-drive.patch
32708ed0686ed931533b13ee2be025342c836bf7e4bf307c6f28cb9de8ca5fd009f173cecdfc600780b932a0bbd9d8e1d3e0c26474b6632098ed254165fb5d1a 0015-power-supply-rk818_battery-Add-code-docs-for-the-HW-.patch
e866a65c244d808336ece21cd2a6413b2a1cdaf86dd3958f4e3436f4317d27a320eceb4581c1e647f7bbacdd9adde4cf20c9496680cb9c28bef6c27f10a36469 0016-power-supply-rk818_battery-Don-t-override-configured.patch
434f83be2ba7ebe6909ab86c17444ee4d9319d78f651f3d17db02e0897e22c22b951f58da4ca8f5ce8072829733872bf6b016defe7396a39adc294ab017d8e0c 0017-power-supply-rk818_battery-Scale-charge-current-by-t.patch
be87ad56d477dec0cc27225365f27a5979022e28d56344af5bd69b4fd85723d9c4957318ad3df7c9a94df005cef9b00e5f85525f3a69d1366c6a280db1e2a9ee 0018-power-supply-rk818_battery-Scale-termination-current.patch
7d17f8c3e9d723ce3c1aed85e11ea9d6fdf4790d7f2561802a25a09075be0c98fa9b558f3699c11bae1b86950b1a3b906e964b7d5629529ecf3a3e9b7f117b36 0019-power-supply-rk818_battery-Compensate-for-IR-drop-wh.patch
9dc69c829df77ddc880b0f614e4af9813cfbf00ab9e993e9b2d7b39e8c7616c9c3c73defa8cdd6af8d4a98faf4d912c302c576c48df629b52730b0ecb515c61a 0020-power-supply-rk818_battery-Rework-the-low-voltage-mo.patch
468fb121e18217e9cb3fe9b69087fd4c0369b7efca84bcefdf8c43bff4bbe219dff5bbd798af42f0fab1d86dee897e9d99a40ee1b1046936c6bf4d07524d24eb 0021-Revert-usb-typec-tcpm-unregister-existing-source-cap.patch
3f2d3ca099812693d68c0bff7ca4d2c6ee578f91e0503868563357570e5d5d865ccdb58f6968d2ff1950417ca6b5fee15904e783ffd481c8b6095d4a0fab28f2 0022-usb-typec-altmodes-displayport-Respect-DP_CAP_RECEPT.patch
60cc0fc8729687e949ddc3ebc6e28aa0f0f235e2702f964555955a48025b7ea40db591535a6462463ed2d1e38aad1ebe205572d376170bb38ecaa42c787739a3 0023-usb-typec-tcpm-Unregister-altmodes-before-registerin.patch
899f1dd1d0819c98308325068c5b99d83affa5bf908ef4aa06ebaa899b06d2c369c2ce9e743226b4f3233562b7531fca55c5741248cc42b220a55362f558ff5d 0024-usb-typec-tcpm-Fix-PD-devices-capabilities-registrat.patch
193a4772ba9be00759c4a80eece4f6c36b69c2b121510ff6b447350e9880db23e790eb5f0d32b9d8660e4a7f49cb0053baade112ea785c5979372f9f25abe785 0025-usb-typec-fusb302-Slightly-increase-wait-time-for-BC.patch
1b332f698982ff1b336470c158efffb7a62f9cabfbc0f0b761d6813e0da85542182374debb1c6e3ddc68cf496005f9f8005b9fd42125a81e0f0dac8a20b91194 0026-usb-typec-fusb302-Set-the-current-before-enabling-pu.patch
d2599774ef0b9f2894389c7d07c6889687ef6b9759df8a48b2dd7627c7717cc66c1a6363702b0598096241b8e08877aa16b9e9088406155f396e1b9099d88024 0027-usb-typec-fusb302-Retry-reading-of-CC-pins-status-if.patch
6fe4c393bb0b0a92785de0fc3c5e3ce42dabf5f196725b3ae186561a128dfdbaa3495ca41fdf7bc7651bedd726ca33681c556924984e4870c9d89c204a2886fb 0028-usb-typec-fusb302-Update-VBUS-state-even-if-VBUS-int.patch
8dd5f542c230a7797f4a9d7fda9474f5e351c2f23b2a88b3564bf52e793d9b851bd26793ef6c9343c883c0a4ccbf3f34add25e74044e18d9e8c0a14adeb10088 0029-usb-typec-fusb302-Add-OF-extcon-support.patch
926dd676a37188b5b7d255264521bacc3f025e038b78d375ec3701ff990686b3fb5aa3f63fcb32caffa2389d92abfc71eda4161b579239f2d67a0c08aa10f65e 0030-usb-typec-fusb302-Fix-register-definitions.patch
a674f636e9e10d605e4aa3a13e9f90560bfb4adc47aa3e80929bdc00b1d739bfd562fa6e2c079f1cc6462e07eb0c703ce7b8c68957a875031dba6453c5f15b1e 0031-usb-typec-fusb302-Clear-interrupts-before-we-start-t.patch
7b8b64e1e84901f2694e83bb06ae90a55961c0963d6381bed6ebf965a9875a4030d762e93fe6ab34ec49e5c2079fdb58fa548743e57e935c7cefaacef4bbdf7f 0032-usb-typec-fusb302-Turn-off-VBUS-and-VCONN-on-shutdow.patch
80dad32d76fb6d2305a9ac4ee854064bf30c25eb246f82363c95713059d89101dea3b93850502a48942f37ec2ecddec7c1e6509eed4b72875363a434b0489ac2 0033-thermal-rockchip-Add-support-for-RV1106-SoC.patch
02400da9ab40ca90754b587939751a13e2ece25639ab909a2a4715bef8333ec954b7828d945f396549d63dfd3c8a2403fb9d69be049ef0d272d1652b915e81d5 0034-soc-rockchip-Add-support-for-power-monitoring-driver.patch
5c8a7e6e365d90b834895afe267e44f49d050662eb0d415a18f364e4c78f5ac77dcbb1f5fcf82b0b77ba85d924db29df5702445c4468f26606f66e8174fd1532 0035-rtc-rockchip-Add-support-for-RTC-present-in-RV1106-S.patch
7b074cfab6c0f5d75dd484f61083413581e47ca56aa62aa3b19fce057960ab98fcd7a8cb997d41f6cc9b889f141c2fe55de8810e404998ab5704d07ea0147722 0036-thermal-rockchip-Add-support-for-RK3506.patch
a291b35fca5fb4ebfec0a84f0a9765b5108fa2e24b6f59cdf47225fa0bccab7572f7a2b8dabeae9769818bca5e07a019fef9711c07efa0c62490f758e3b0ebdf 0037-arm64-dts-rockchip-rk3399-Disable-debug-nodes.patch
3f8b4f3e1edf582b5e79eb4bea005066c4786c1d556138785361d619fe594b819aa645b90fb15e89cc411abc23566e94973267d1587d873373531eceab3171ce 0038-arm64-dts-rockchip-rk3399-Add-reboot-mode-driver.patch
b4a7bf3c237271bda2c4fad8b0ea15a400d8a2644df9461c9a6eb0b92f22f609a7ae573375549d22445c0962202e2615bed6169383a2cbca8aba7832fdb1cdf0 0039-arm64-dts-rockchip-rk3399-Power-cycle-the-USB3-PHY-o.patch
ae1ae498115fe4ed4dc8edd5e6b41198a79f6bbe8cc140034d5b64b50d184ccb61565ae911ca98005de232850f116bfd8813e720358196bb4bf3c19680893cb0 0040-arm64-dts-rockchip-rk3399-Add-dmc_opp_table.patch
9812081807ff593d9ed87440d9861466dbad983b983c5e507e74f23988cd18d4284d01b4331ae14e633903a5f7b2fccf5bf4f18d750c93a91dfde69b8f3f2aec 0041-arm64-dts-rockchip-rk3399-s-Add-DMC-table.patch
2ada12a15783b699c344a76975551fd2e6ee4f16eee8e95b5856f9ad4d906bf5dd86faa7b19ca2d0902f4ea6ede2f62f4e64b9b9206552016d371fd23152536b 0042-arm64-dts-rockchip-rk3399-Number-the-CDN-DP-ports.patch
a38a87f416e163fa27ed9000b9a95765cb5992234983ae90ddba64b1af3d354dea9a78b585a2f9ee7f0b75ed073cbfdf17a4fd496cb8e8249ffb896a37bb0b40 0043-arm64-dts-rockchip-rk3399-pinephone-pro-Add-Type-C-p.patch
b8ac6e5961ec78ed892056340403e031a0e167bdbec4bf5db4f722549d56f15cc5c23b5641519040d8e10fdbc6df2ca4a75fae178cd6feeddc5d535d5f6ee2d1 0044-arm64-dts-rockchip-rk3399-pinephone-pro-Add-internal.patch
189fb869641550ab4309c9835ef2af7569870746a1cf56420b5fbb608477abd5465ebe934be51eb0ac1049eb8199dbcb593f1f4caad7698404e02ca8b5e94a1c 0045-arm64-dts-rockchip-rk3399-pinephone-pro-Add-battery-.patch
d6021113bd4bed4a00865c1099cddaa9586cae3c8c84113ee81b4aecda1e912715068fd56b7b965c586255064961600c5d161ada28409e0b123de540d0956068 0046-arm64-dts-rockchip-rk3399-pinephone-pro-Add-sound-su.patch
56b301d897dee4176409fe41481ae387472c0aa808554c1bf90c8279a347f29305b96f893260a2d903548dee98711eb6e7067249eab1ec4bddba88bdf3c348c1 0047-arm64-dts-rockchip-rk3399-pinephone-pro-Add-modem-su.patch
be7bda6914c8bbdb58443de468b1e4128862262bc4753a34f4687806adb32f4c5fc87f00d724ae3f7c0c38762ff5a4bc1c6c8ed452897941ffdfead69bead8eb 0048-arm64-dts-rockchip-rk3399-pinephone-pro-Change-modem.patch
ab5f0126715a47c135986f708ade3238331022ff606a338f88a42cd1d0a693980e6ccbe4f8ef8252319eb019294798fe8d8bafa7c77d6355521fcf004ba4a17d 0049-arm64-dts-rockchip-rk3399-pinephone-pro-Add-light-pr.patch
13f40e2875d03d92edbb8f94505a47e01554880ee79c420d6ea153e0dd7822df3694b65ce5c7a0f1c388ea7446526c3ca35dff00da2ac68c1a81514fbbf2b612 0050-arm64-dts-rockchip-rk3399-pinephone-pro-Add-I2C-supp.patch
095439b9ab1f805e45322c1f463d7a41fe781d8a62b042b6c84ebde02a36f4900503072050297f0787a150fcbd157a346223e8c940f1f22254b9b8fbe3271f4d 0051-arm64-dts-rockchip-rk3399-pinephone-pro-Add-magnetom.patch
d8f731cb20ab7a347e9ffc4f7909aad6ad756d05ce2c688fe9e20329b65abe3a182a068b847fb3187aa1a949544bb5257323bcfb9248f83fe612b78c44b59e91 0052-arm64-dts-rockchip-rk3399-pinephone-pro-Add-mount-ma.patch
f347e58dc151abc59ac26fbbca6b3caa4a897ee92e1b82edb856929db3fa4dc0dd82d368b7ace4982d89ad53219e54882e5d4b5746c6b3b42562277f1f2e73bd 0053-arm64-dts-rockchip-rk3399-pinephone-pro-Enable-POGO-.patch
3fadc742a0594d3369bd45da603deecbc5394875252cb2797e7b1a22a3b8d1dda70920c373e9978be5fa1784ff13e4dac6070594ff3bf5998fee4e46a874a822 0054-arm64-dts-rockchip-rk3399-pinephone-pro-Add-pinephon.patch
e63ba310ec1863024f79a24aefd38cf8f7c30fea533178623c6e5579ce44ab43895e2a7c3232ef4c5825fbcbc3b2cd3e642f87f8cdd8d52a5238643fabecf4bb 0055-arm64-dts-rockchip-rk3399-pinephone-pro-Switch-LED-b.patch
7071c783e266e36af1453ce8aa09c730b7205bd39ca13f5911d99cae71cbcd9bc10115529b606cbb75948bbf4859f53f497506248466641163fb8dec95b557c7 0056-arm64-dts-rockchip-rk3399-pinephone-pro-Pre-configur.patch
4b7db966c15ece79b681881b33672d43eda2b0996e598f5e25ff5bb7a8220c7f1b33b974cff8b93d71f0aceede40213f9552fc818320c90f19b2608fe8fb2397 0057-arm64-dts-rockchip-rk3399-pinephone-pro-Improve-SPI-.patch
0e3c2334702b9169e752a64f772c18e50ae4d6f6051ba4db20d9a612fca628b3823742480718aa57ca6ac07d4f0e568eab317805fffc45a4f53d6e7c47c2adfe 0058-arm64-dts-rockchip-rk3399-pinephone-pro-Assign-power.patch
f912985de8af6b874ef2de29902d109912fc884e7c3c2d5247d47701f92de9a39a2ecdb211138abe0e4f7d2b12cf8c28cc022d452ad546182fd14310480c3f6f 0059-arm64-dts-rockchip-rk3399-pinephone-pro-Add-camera-f.patch
ae643c26564a1fda4c5961cb755b05be54e8d04926647ec79fa0bb15923f67a4b60c7f52172e01f1263f4b985b13f05409faa42bf4597c3ce25f0cf585912347 0060-arm64-dts-rockchip-rk3399-pinephone-pro-Disable-inte.patch
62214be563115225467f6129e845b75ba9775413f405df15d290acb81de6184eb206c72486286440a4ee3f7c921339670bb421405b9cde1b273e81076bb037b6 0061-Revert-usb-dwc3-Abort-suspend-on-soft-disconnect-fai.patch
2ffebbf8a957a526e69f20483d73c4df69a7c7e75913e49d1969288cfc3e00f44ac07ad4157368acb4de9a56dc04f592bc93e4417203ec3b1fee7421f158c551 0062-phy-rockchip-inno-usb2-Add-support-for-RV1106-RV1103.patch
ebc3f59f96caeab8f6dbf2356b96c5693af4caa906208d578bb18cb64f89b47c91a10be6b59825168014a2ab67b88a7864cb33713b083068e2751f36c51b1c42 0063-phy-rockchip-inno-usb2-Add-support-for-RK3506.patch
01daf6dfbb680b2a30fb1309da6adda06b810458513381b934c6d5fe1e179431b1fa985605a4b37eed33a359f6ea1827008d6489d18bf3b882fb0767f367d2b1 0064-phy-rockchip-inno-usb2-Add-PHY-tuning-for-rk3566-rk3.patch
a8e02a2528690ce0dabe5be811dba32b055c38da4656585a9879a1f33cdaff21b3e1315b39ca34d4148a63b43e502eff2e662c8d09db68e43c0bdd565be2b43c 0065-drm-rockchip-cdn-dp-Disable-CDN-DP-on-disconnect.patch
92d64283d01c6709daecfaec8feac868d81a6e767bea3403d214192a3427ac7284cd9803571fb8ea7bc3bcea6d951fc2a6ed2a3ec50e54048990f468aee854a9 0066-phy-rockchip-inno-usb2-Decrease-delay-between-port-i.patch
3e3a8d983041efef81f687ebf92cb7a78bb52a67a949136387c91bbb6fb24cf382b3c439cfee019ad3d928e960ea736e10201084b303b9c1ac56b18129c77a0c 0067-phy-rockchip-inno-usb2-More-robust-charger-detection.patch
3155debeef4bd6357f6242cb371a62d23308b23028204a9767808c5efaf154b01e8af8804b8dd9699e19bdee8c6de5fff29351eaf58df82d1c4d103ca2bf0859 0068-usb-dwc3-Track-the-power-state-of-usb3_generic_phy.patch
d61032c6cbe14a01e484feb77e969f1ce349a0be7657f26f8913087c94d755b090ee92a92a405bf320dedc399bcb0c30de5f380c8d3216d73995684a14ea44f6 0069-usb-dwc3-Always-disable-SUSPHY-when-entering-a-role.patch
b84f8d93efb309395e75d0cc92a30856ab296d1026be948b4336a3f972d245f10e5a8724b17f84655ee79e2b81228c201a67bfd2e502512cbd3288f4ff803b4d 0070-usb-dwc3-Track-cable-connection-state-separately-fro.patch
dfa0f68e8ccfef720908ae1980bcf7c9d20de2642b6fb35cb644cd340e491596d84e5084f4610420c94f6cec625892d28965d0bdf0cbf537c666b03e7caeb199 0071-usb-dwc3-Power-cycle-USB3-PHY-on-role-connection-cha.patch
31edf0fa5982c27fea77b90233a3952ff8e47ba12eee1ad0947c6f5cc0197e326d31ca7474aed7908e087a4e6ecabc0f06ba95f35985e2a6e3fc2a01c2bf9992 0072-usb-dwc3-Register-the-role-even-when-no-cable-is-con.patch
770720d8123862ffa2c574256566ef1576d5f103b58ab3239c7d2837d7e6dac8671a9813ccbde86ff66009e1f7dcec60c898125e9da63add3f12098990f3a6b9 0073-phy-rockchip-inno-usb2-Set-up-charger-detection-mode.patch
ab95b686403023563a99deef3f11bb8749dee2981b2333cdcc771f78504682e427b5471344e1c0e69643d8fda93e64d5cfdc229d3564a55400d244bfdf9f6ec2 0074-usb-dwc3-Do-not-re-register-the-gadget-on-cable-even.patch
d33ee67d8340e7883e147f36579c7b62fc70729430d078a79bad763c9a14f4dad566b6c57691846c1de5423c2c20980f4b2c0defe2549c0511f490d2b1c4354e 0075-phy-rockchip-typec-Support-a-Type-C-orientation-swit.patch
ec191971aa105c29259f21f4eff218443652ad43da4b41d09b7341121335ea65f0c2da7fcd5f6f3f2a97d8fe1dd6a8d0e59112dd75ffb5dae466eee0a6cff9ac 0076-phy-rockchip-typec-Support-a-Type-C-mode-mux.patch
180c1ba0fe432ddc6897b127400db1577c4abec8088a16f91d18c1445b582fc0f049ec9359373d7b7f3901b44c1c0976634184261d17f590ef618a865ed88603 0077-phy-rockchip-typec-Publish-the-DP-lane-count.patch
bd5746a1a46800ad4f2c87b956d5679ab0c0a1921be543afec8dc329f64ca01f56f84e53b9162e0837e56c24099ca179c2fce8247f84ba7e1061a396390a0bff 0078-drm-rockchip-cdn-dp-Support-ports-driven-by-a-Type-C.patch
9bd1fe71e606528c679807b9be6df5406bf3762fe1d8f7cc8b648f06ebab8d1a7e774fd642aabd5016124780f3f6999ce04b5d63b897311b04404f11040b7957 0079-phy-rockchip-inno-usb2-Learn-the-host-role-from-phy_.patch
0215e3c74d92868902522adb131a107b31bac794b1aeec2851d730102cac60f835daaad4eec466d06c0f7a6883d42bf30a410f8e3e4a46bf68c74060b424a034 0080-usb-dwc3-Tell-the-UDC-core-when-there-is-no-cable.patch
01b2f9cf641d86a9a9bbb7ae08c3d852427330ac871e69cd091b817eedf95e2d41c7f3d79b3b9113fa703a1e9e3fb786e0d39b3239c2fae1e6621de9325de017 0081-phy-rockchip-inno-usb2-Do-not-run-charger-detection-.patch
95c8adcfdad1b3d0be2dc288e65354ad6b44ea60517b26ddc6b3f5146e9e8233f7bd82449af95b7c2a29c3532c9787d00f7a805aa04a9587ba1813425a58221f 0082-usb-dwc3-Set-the-PHY-mode-before-starting-the-host.patch
32452045d7c52fe0b19c2817777ff361f05c866e8282c500f9169fd76dbef363b0d2fdb9ea5c35031e808dc92cd9bda55e12d473e5383a1eda103a89dcfbe41d 0083-usb-dwc3-Do-not-connect-the-gadget-while-no-cable-is.patch
4ad1747e1f284a2ed17dfa77704e45e010bfc48645e09a338241cbe2d95732f16d69052bb58489f481388a06abf0030f033501be8e367f2b6f31fb8378aa164b 0084-phy-rockchip-inno-usb2-Power-the-PHY-up-before-the-h.patch
204f75e640d56deb76f0207d5fc7320236191b47d07d4f80676aa058a72d6f5643b5df8af825a8c3b14ee7852a6e0272d8fe9726c9beefaac7f285052a8bbe6c 0085-usb-dwc3-Require-MPS-aligned-OUT-buffers.patch
743c3b218c2463af359e5d5371b8db7cde7f4e520ce278168dbfda8afe1461329eb07f6680b5254cfded962359425217e97b3e31a1991c0b5b7edb20fd6c3231 0086-usb-typec-displayport-Update-the-mux-before-signalli.patch
b9c3e073e1f7c7dbcc5e71c4c2004d2f45b825026ec130b72e530a3a5faf3e243c8dbe169f3f9cbf4c9cf5d2f6955fbe8d406fec43ac94e0942d388a0bee2088 0087-mtd-spi-nor-gigadevice-Add-support-for-gd25lq128e.patch
452411c91daea100f66cc389d507a6774c31fd152e57ba9d73eec5e1a244ab989da6de6f159c412cf0c30fa8c7564854bd1cefdf9532b6398804ba1267fd217d 0088-clk-rk3399-Export-SCLK_CIF_OUT_SRC-to-device-tree.patch
10a63a4335e05993f9bc30e60e9fdf0423f613abbede63bee52b9677e936a84cc6036961d28af60d582541847d86ec1e662717222d16fdc1e3e46c634d9f8e44 0089-clk-rockchip-rk3399-Don-t-allow-to-reparent-dclk_vop.patch
a0953345a14bd46197c44dcba70a490da66afbe667e17be6c6b7c97f29d06360fd05a52a98e1467fef068c7bb688a5a45369f5ed9a63e34fd3cd63373c542ac8 0001-arm64-dts-rk3399-pinephone-pro-Keep-modem-regulators.patch
"
@@ -1,161 +0,0 @@
From b23705e6afb6ac4ae6d220dcb35975698667dd76 Mon Sep 17 00:00:00 2001
From: Carlos Llamas <cmllamas@google.com>
Date: Sat, 23 May 2026 16:27:21 +0000
Subject: [PATCH] libbpf: Fix UAF in strset__add_str()
strset_add_str_mem() might reallocate the strset data buffer in order to
accommodate the provided string 's'. However, if 's' points to a string
already present in the buffer, it becomes dangling after the realloc.
This leads to a use-after-free when attempting to memcpy() the string
into the new buffer.
One scenario that triggers this problematic path is when resolve_btfids
attempts to patch kfunc prototypes using existing BTF parameter names:
| resolve_btfids: function bpf_list_push_back_impl already exists in BTF
| Segmentation fault (core dumped)
Compiling resolve_btfids with fsanitize=address generates a detailed
report of the UAF:
| =================================================================
| ERROR: AddressSanitizer: heap-use-after-free on address 0x7f4c4a500bd4
| ==1507892==ERROR: AddressSanitizer: heap-use-after-free on address 0x7f4c4a500bd4 at pc 0x55d25155a2a8 bp 0x7ffcef879060 sp 0x7ffcef878818
| READ of size 5 at 0x7f4c4a500bd4 thread T0
| #0 0x55d25155a2a7 in memcpy (tools/bpf/resolve_btfids/resolve_btfids+0xcf2a7)
| #1 0x55d2515d708e in strset__add_str tools/lib/bpf/strset.c:162:2
| #2 0x55d2515c730b in btf__add_str tools/lib/bpf/btf.c:2109:8
| #3 0x55d2515c9020 in btf__add_func_param tools/lib/bpf/btf.c:3108:14
| #4 0x55d25159f0b5 in process_kfunc_with_implicit_args tools/bpf/resolve_btfids/main.c:1196:9
| #5 0x55d25159e004 in btf2btf tools/bpf/resolve_btfids/main.c:1229:9
| #6 0x55d25159cee7 in main tools/bpf/resolve_btfids/main.c:1535:6
| #7 0x7f4c78e29f76 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
| #8 0x7f4c78e2a026 in __libc_start_main csu/../csu/libc-start.c:360:3
| #9 0x55d2514bb860 in _start (tools/bpf/resolve_btfids/resolve_btfids+0x30860)
|
| 0x7f4c4a500bd4 is located 13268 bytes inside of 2829000-byte region [0x7f4c4a4fd800,0x7f4c4a7b02c8)
| freed by thread T0 here:
| #0 0x55d25155b700 in realloc (tools/bpf/resolve_btfids/resolve_btfids+0xd0700)
| #1 0x55d2515c426c in libbpf_reallocarray tools/lib/bpf/./libbpf_internal.h:220:9
| #2 0x55d2515c426c in libbpf_add_mem tools/lib/bpf/btf.c:224:13
|
| previously allocated by thread T0 here:
| #0 0x55d25155b2e3 in malloc (tools/bpf/resolve_btfids/resolve_btfids+0xd02e3)
| #1 0x55d2515d6e7d in strset__new tools/lib/bpf/strset.c:58:20
While resolve_btfids could be refactored to avoid this call path, let's
instead fix this issue at the source in strset__add_str() and avoid
similar scenarios.
Let's check if set->strs_data was reallocated and whether 's' points to
an internal string within the old strset buffer. In such case, 's' is
reconstructed to point to the new buffer.
While already here, also fix strset__find_str() which suffers from the
same problem by factoring out the common operations into a new helper
function strset_str_append().
Fixes: 90d76d3ececc ("libbpf: Extract internal set-of-strings datastructure APIs")
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Suggested-by: Mykyta Yatsenko <yatsenko@meta.com>
Signed-off-by: Carlos Llamas <cmllamas@google.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20260523162722.2718940-1-cmllamas@google.com
---
tools/lib/bpf/strset.c | 62 ++++++++++++++++++++++++++++--------------
1 file changed, 41 insertions(+), 21 deletions(-)
diff --git a/tools/lib/bpf/strset.c b/tools/lib/bpf/strset.c
index 2464bcbd04e037..ace73c6b3d62b4 100644
--- a/tools/lib/bpf/strset.c
+++ b/tools/lib/bpf/strset.c
@@ -107,6 +107,41 @@ static void *strset_add_str_mem(struct strset *set, size_t add_sz)
set->strs_data_len, set->strs_data_max_len, add_sz);
}
+static long strset_str_append(struct strset *set, const char *s)
+{
+ uintptr_t old_data = (uintptr_t)set->strs_data;
+ size_t old_data_len = set->strs_data_len;
+ uintptr_t old_s = (uintptr_t)s;
+ long len = strlen(s) + 1;
+ void *p;
+
+ /*
+ * Hashmap keys are always offsets within set->strs_data, so to even
+ * look up some string from the "outside", we need to first append it
+ * at the end, so that it can be addressed with an offset. Luckily,
+ * until set->strs_data_len is incremented, that string is just a piece
+ * of garbage for the rest of the code, so no harm, no foul. On the
+ * other hand, if the string is unique, it's already appended and
+ * ready to be used, only a simple set->strs_data_len increment away.
+ */
+ p = strset_add_str_mem(set, len);
+ if (!p)
+ return -ENOMEM;
+
+ /*
+ * The set->strs_data might have reallocated and if 's' pointed
+ * to an internal string within the old buffer, then it became
+ * dangling and needs to be reconstructed before the copy.
+ */
+ if (old_data && old_data != (uintptr_t)set->strs_data &&
+ old_s >= old_data && old_s < old_data + old_data_len)
+ s = set->strs_data + (old_s - old_data);
+
+ memcpy(p, s, len);
+
+ return len;
+}
+
/* Find string offset that corresponds to a given string *s*.
* Returns:
* - >0 offset into string data, if string is found;
@@ -116,16 +151,12 @@ static void *strset_add_str_mem(struct strset *set, size_t add_sz)
int strset__find_str(struct strset *set, const char *s)
{
long old_off, new_off, len;
- void *p;
- /* see strset__add_str() for why we do this */
- len = strlen(s) + 1;
- p = strset_add_str_mem(set, len);
- if (!p)
- return -ENOMEM;
+ len = strset_str_append(set, s);
+ if (len < 0)
+ return len;
new_off = set->strs_data_len;
- memcpy(p, s, len);
if (hashmap__find(set->strs_hash, new_off, &old_off))
return old_off;
@@ -142,24 +173,13 @@ int strset__find_str(struct strset *set, const char *s)
int strset__add_str(struct strset *set, const char *s)
{
long old_off, new_off, len;
- void *p;
int err;
- /* Hashmap keys are always offsets within set->strs_data, so to even
- * look up some string from the "outside", we need to first append it
- * at the end, so that it can be addressed with an offset. Luckily,
- * until set->strs_data_len is incremented, that string is just a piece
- * of garbage for the rest of the code, so no harm, no foul. On the
- * other hand, if the string is unique, it's already appended and
- * ready to be used, only a simple set->strs_data_len increment away.
- */
- len = strlen(s) + 1;
- p = strset_add_str_mem(set, len);
- if (!p)
- return -ENOMEM;
+ len = strset_str_append(set, s);
+ if (len < 0)
+ return len;
new_off = set->strs_data_len;
- memcpy(p, s, len);
/* Now attempt to add the string, but only if the string with the same
* contents doesn't exist already (HASHMAP_ADD strategy). If such
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 7.1.0 Kernel Configuration
# Linux/arm64 7.2.0 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="Alpine clang version 22.1.8"
CONFIG_GCC_VERSION=0
@@ -22,6 +22,7 @@ CONFIG_CC_HAS_ASSUME=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
CONFIG_CC_HAS_COUNTED_BY=y
CONFIG_CC_HAS_COUNTED_BY_PTR=y
CONFIG_CC_HAS_ALLOC_TOKEN=y
CONFIG_CC_HAS_MULTIDIMENSIONAL_NONSTRING=y
CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY=y
CONFIG_PAHOLE_VERSION=131
@@ -76,7 +77,6 @@ CONFIG_SPARSE_IRQ=y
CONFIG_GENERIC_IRQ_KEXEC_CLEAR_VM_FORWARD=y
# end of IRQ subsystem
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_ARCH_HAS_TICK_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
@@ -196,6 +196,7 @@ CONFIG_GCC10_NO_ARRAY_BOUNDS=y
CONFIG_GCC_NO_STRINGOP_OVERFLOW=y
CONFIG_ARCH_SUPPORTS_INT128=y
CONFIG_NUMA_BALANCING=y
CONFIG_SCHED_CACHE=y
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_SLAB_OBJ_EXT=y
CONFIG_CGROUPS=y
@@ -316,6 +317,12 @@ CONFIG_VMCORE_INFO=y
# CONFIG_KEXEC is not set
# CONFIG_KEXEC_FILE is not set
# end of Kexec and crash features
#
# Live Update and Kexec HandOver
#
# CONFIG_KEXEC_HANDOVER is not set
# end of Live Update and Kexec HandOver
# end of General setup
CONFIG_ARM64=y
@@ -354,6 +361,7 @@ CONFIG_BUILTIN_RETURN_ADDRESS_STRIPS_PAC=y
# CONFIG_ARCH_SUNXI is not set
# CONFIG_ARCH_ALPINE is not set
# CONFIG_ARCH_APPLE is not set
# CONFIG_ARCH_ASPEED is not set
# CONFIG_ARCH_AXIADO is not set
# CONFIG_ARCH_BCM is not set
# CONFIG_ARCH_BERLIN is not set
@@ -439,6 +447,7 @@ CONFIG_ARM64_ERRATUM_3117295=y
CONFIG_ARM64_ERRATUM_3194386=y
CONFIG_ARM64_ERRATUM_4311569=y
CONFIG_ARM64_ERRATUM_4193714=y
CONFIG_ARM64_ERRATUM_4118414=y
# CONFIG_CAVIUM_ERRATUM_22375 is not set
# CONFIG_CAVIUM_ERRATUM_23144 is not set
# CONFIG_CAVIUM_ERRATUM_23154 is not set
@@ -448,10 +457,12 @@ CONFIG_ARM64_ERRATUM_4193714=y
# CONFIG_FUJITSU_ERRATUM_010001 is not set
# CONFIG_HISILICON_ERRATUM_161600802 is not set
CONFIG_HISILICON_ERRATUM_162100801=y
CONFIG_HISILICON_ERRATUM_162100125=y
# CONFIG_QCOM_FALKOR_ERRATUM_1003 is not set
# CONFIG_QCOM_FALKOR_ERRATUM_1009 is not set
# CONFIG_QCOM_QDF2400_ERRATUM_0065 is not set
# CONFIG_QCOM_FALKOR_ERRATUM_E1041 is not set
CONFIG_ARM64_WORKAROUND_DISABLE_CNP=y
# CONFIG_NVIDIA_CARMEL_CNP_ERRATUM is not set
CONFIG_ROCKCHIP_ERRATUM_3568002=y
CONFIG_ROCKCHIP_ERRATUM_3588001=y
@@ -578,6 +589,7 @@ CONFIG_ARM64_LSUI=y
# end of ARMv9.6 architectural features
CONFIG_ARM64_SVE=y
CONFIG_AS_HAS_SME=y
CONFIG_ARM64_SME=y
# CONFIG_ARM64_PSEUDO_NMI is not set
CONFIG_RELOCATABLE=y
@@ -808,6 +820,9 @@ CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
CONFIG_HAS_LTO_CLANG=y
CONFIG_LTO_NONE=y
# CONFIG_LTO_CLANG_THIN is not set
# CONFIG_LTO_CLANG_THIN_DIST is not set
# CONFIG_AUTOFDO_CLANG is not set
# CONFIG_PROPELLER_CLANG is not set
CONFIG_ARCH_SUPPORTS_CFI=y
CONFIG_CFI=y
CONFIG_CFI_ICALL_NORMALIZE_INTEGERS=y
@@ -967,6 +982,7 @@ CONFIG_EFI_PARTITION=y
CONFIG_BLK_PM=y
CONFIG_BLOCK_HOLDER_DEPRECATED=y
CONFIG_BLK_MQ_STACKING=y
# CONFIG_BLK_ERROR_INJECTION is not set
#
# IO Schedulers
@@ -1047,7 +1063,7 @@ CONFIG_SLAB_FREELIST_RANDOM=y
CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SLAB_BUCKETS=y
# CONFIG_SLUB_STATS is not set
# CONFIG_RANDOM_KMALLOC_CACHES is not set
# CONFIG_KMALLOC_PARTITION_CACHES is not set
# end of Slab allocator options
# CONFIG_SHUFFLE_PAGE_ALLOCATOR is not set
@@ -1104,7 +1120,6 @@ CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_NEVER=y
# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_WITHIN_SIZE is not set
# CONFIG_TRANSPARENT_HUGEPAGE_TMPFS_HUGE_ADVISE is not set
CONFIG_THP_SWAP=y
# CONFIG_READ_ONLY_THP_FOR_FS is not set
# CONFIG_NO_PAGE_MAPCOUNT is not set
CONFIG_PAGE_MAPCOUNT=y
CONFIG_PGTABLE_HAS_HUGE_LEAVES=y
@@ -1628,7 +1643,6 @@ CONFIG_VLAN_8021Q=m
# CONFIG_VLAN_8021Q_MVRP is not set
CONFIG_LLC=m
CONFIG_LLC2=m
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_PHONET is not set
@@ -1986,6 +2000,7 @@ CONFIG_ARM_SCPI_PROTOCOL=m
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DMIID=y
# CONFIG_DMI_SYSFS is not set
# CONFIG_RASPBERRYPI_FIRMWARE is not set
# CONFIG_SYSFB_SIMPLEFB is not set
# CONFIG_TH1520_AON_PROTOCOL is not set
# CONFIG_TURRIS_MOX_RWTM is not set
@@ -2014,6 +2029,7 @@ CONFIG_EFI_EARLYCON=y
# CONFIG_EFI_DISABLE_RUNTIME is not set
# CONFIG_EFI_COCO_SECRET is not set
# CONFIG_OVMF_DEBUG_LOG is not set
CONFIG_EFI_SBAT_FILE=""
# end of EFI (Extensible Firmware Interface) Support
# CONFIG_IMX_SCMI_CPU_DRV is not set
@@ -2100,7 +2116,6 @@ CONFIG_MTD_CFI_I2=y
# Mapping drivers for chip access
#
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_TS5500 is not set
# CONFIG_MTD_PLATRAM is not set
# end of Mapping drivers for chip access
@@ -2173,6 +2188,7 @@ CONFIG_OF_NUMA=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_NULL_BLK=m
CONFIG_CDROM=m
CONFIG_ZRAM=y
CONFIG_ZRAM_BACKEND_LZ4=y
CONFIG_ZRAM_BACKEND_LZ4HC=y
@@ -2235,7 +2251,6 @@ CONFIG_SENSORS_LIS3LV02D=m
# CONFIG_ISL29020 is not set
# CONFIG_SENSORS_TSL2550 is not set
# CONFIG_SENSORS_BH1770 is not set
# CONFIG_SENSORS_APDS990X is not set
# CONFIG_HMC6352 is not set
# CONFIG_DS1682 is not set
# CONFIG_LATTICE_ECP3_CONFIG is not set
@@ -2286,7 +2301,7 @@ CONFIG_SCSI_DMA=y
#
CONFIG_BLK_DEV_SD=m
# CONFIG_CHR_DEV_ST is not set
# CONFIG_BLK_DEV_SR is not set
CONFIG_BLK_DEV_SR=m
CONFIG_CHR_DEV_SG=m
CONFIG_BLK_DEV_BSG=y
# CONFIG_CHR_DEV_SCH is not set
@@ -2416,6 +2431,7 @@ CONFIG_ETHERNET=y
# CONFIG_NET_VENDOR_ACTIONS is not set
# CONFIG_NET_VENDOR_AIROHA is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
CONFIG_NET_VENDOR_ALIBABA=y
# CONFIG_ALTERA_TSE is not set
# CONFIG_NET_VENDOR_AMAZON is not set
# CONFIG_NET_VENDOR_AMD is not set
@@ -2504,6 +2520,7 @@ CONFIG_FIXED_PHY=y
# MII PHY device drivers
#
# CONFIG_AS21XXX_PHY is not set
# CONFIG_AIR_AN8801_PHY is not set
# CONFIG_AIR_EN8811H_PHY is not set
# CONFIG_AMD_PHY is not set
# CONFIG_MESON_GXL_PHY is not set
@@ -2608,6 +2625,7 @@ CONFIG_PPP_DEFLATE=m
CONFIG_PPP_FILTER=y
CONFIG_PPP_MPPE=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOX=m
CONFIG_PPPOE=m
# CONFIG_PPPOE_HASH_BITS_1 is not set
# CONFIG_PPPOE_HASH_BITS_2 is not set
@@ -2850,6 +2868,7 @@ CONFIG_TOUCHSCREEN_GOODIX=m
# CONFIG_TOUCHSCREEN_ELO is not set
# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
# CONFIG_TOUCHSCREEN_WACOM_W9000 is not set
# CONFIG_TOUCHSCREEN_MAX11801 is not set
# CONFIG_TOUCHSCREEN_MMS114 is not set
# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set
@@ -3140,6 +3159,7 @@ CONFIG_HW_RANDOM_KEYSTONE=m
CONFIG_HW_RANDOM_ARM_SMCCC_TRNG=m
# CONFIG_HW_RANDOM_JH7110 is not set
CONFIG_HW_RANDOM_ROCKCHIP=m
# CONFIG_HW_RANDOM_XILINX is not set
CONFIG_DEVMEM=y
CONFIG_DEVPORT=y
CONFIG_TCG_TPM=y
@@ -3224,6 +3244,7 @@ CONFIG_I2C_GPIO=m
# CONFIG_I2C_KEBA is not set
# CONFIG_I2C_LPC2K is not set
# CONFIG_I2C_LS2X is not set
# CONFIG_I2C_LS2X_V2 is not set
# CONFIG_I2C_MESON is not set
# CONFIG_I2C_MICROCHIP_CORE is not set
# CONFIG_I2C_MT65XX is not set
@@ -3386,6 +3407,7 @@ CONFIG_SPI_ROCKCHIP=y
# CONFIG_SPI_SIFIVE is not set
# CONFIG_SPI_SN_F_OSPI is not set
# CONFIG_SPI_SG2044_NOR is not set
# CONFIG_SPI_SPACEMIT_K1 is not set
# CONFIG_SPI_SPRD is not set
# CONFIG_SPI_SPRD_ADI is not set
# CONFIG_SPI_STM32 is not set
@@ -3485,6 +3507,7 @@ CONFIG_GENERIC_PINCONF=y
# CONFIG_PINCTRL_EIC7700 is not set
# CONFIG_PINCTRL_EQUILIBRIUM is not set
# CONFIG_PINCTRL_EYEQ5 is not set
# CONFIG_PINCTRL_GENERIC_MUX is not set
# CONFIG_PINCTRL_INGENIC is not set
# CONFIG_PINCTRL_K210 is not set
# CONFIG_PINCTRL_K230 is not set
@@ -3507,9 +3530,18 @@ CONFIG_PINCTRL_SINGLE=y
# CONFIG_PINCTRL_ZYNQ is not set
# CONFIG_PINCTRL_MLXBF3 is not set
# CONFIG_PINCTRL_OWL is not set
#
# Airoha pinctrl drivers
#
# CONFIG_PINCTRL_AIROHA is not set
# end of Airoha pinctrl drivers
# CONFIG_PINCTRL_ASPEED_G4 is not set
# CONFIG_PINCTRL_ASPEED_G5 is not set
# CONFIG_PINCTRL_ASPEED_G6 is not set
# CONFIG_PINCTRL_ASPEED_G7_SOC0 is not set
# CONFIG_PINCTRL_ASPEED_G7_SOC1 is not set
# CONFIG_PINCTRL_BCM281XX is not set
# CONFIG_PINCTRL_BCM2835 is not set
# CONFIG_PINCTRL_BCM4908 is not set
@@ -3593,7 +3625,6 @@ CONFIG_PINCTRL_SINGLE=y
# CONFIG_PINCTRL_MT7629 is not set
# CONFIG_PINCTRL_MT8135 is not set
# CONFIG_PINCTRL_MT8127 is not set
# CONFIG_PINCTRL_AIROHA is not set
# CONFIG_PINCTRL_MT2712 is not set
# CONFIG_PINCTRL_MT6765 is not set
# CONFIG_PINCTRL_MT6779 is not set
@@ -3633,6 +3664,7 @@ CONFIG_PINCTRL_SINGLE=y
# CONFIG_PINCTRL_QCOM_SPMI_PMIC is not set
# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
# CONFIG_PINCTRL_LPASS_LPI is not set
# CONFIG_PINCTRL_RTD is not set
#
# Renesas pinctrl drivers
@@ -3712,9 +3744,27 @@ CONFIG_PINCTRL_SINGLE=y
# CONFIG_PINCTRL_STM32MP157 is not set
# CONFIG_PINCTRL_STM32MP257 is not set
# CONFIG_PINCTRL_STM32_HDP is not set
# CONFIG_PINCTRL_TEGRA is not set
# CONFIG_PINCTRL_TEGRA20 is not set
# CONFIG_PINCTRL_TEGRA30 is not set
# CONFIG_PINCTRL_TEGRA114 is not set
# CONFIG_PINCTRL_TEGRA124 is not set
# CONFIG_PINCTRL_TEGRA210 is not set
# CONFIG_PINCTRL_TEGRA186 is not set
# CONFIG_PINCTRL_TEGRA194 is not set
# CONFIG_PINCTRL_TEGRA234 is not set
# CONFIG_PINCTRL_TEGRA238 is not set
# CONFIG_PINCTRL_TEGRA264 is not set
# CONFIG_PINCTRL_TEGRA_XUSB is not set
# CONFIG_PINCTRL_TI_IODELAY is not set
# CONFIG_PINCTRL_ULTRARISC_DP1000 is not set
# CONFIG_PINCTRL_UNIPHIER is not set
# CONFIG_PINCTRL_TMPV7700 is not set
# CONFIG_PINCTRL_VT8500 is not set
# CONFIG_PINCTRL_WM8505 is not set
# CONFIG_PINCTRL_WM8650 is not set
# CONFIG_PINCTRL_WM8750 is not set
# CONFIG_PINCTRL_WM8850 is not set
CONFIG_GPIOLIB_LEGACY=y
CONFIG_GPIOLIB=y
CONFIG_GPIOLIB_FASTPATH_LIMIT=512
@@ -3748,6 +3798,7 @@ CONFIG_GPIO_GENERIC=y
# CONFIG_GPIO_DWAPB is not set
# CONFIG_GPIO_EIC_SPRD is not set
# CONFIG_GPIO_EM is not set
# CONFIG_GPIO_EN7523 is not set
CONFIG_GPIO_EP93XX=y
# CONFIG_GPIO_GE_FPGA is not set
# CONFIG_GPIO_FTGPIO010 is not set
@@ -3783,6 +3834,7 @@ CONFIG_GPIO_RTD=y
# CONFIG_GPIO_SIFIVE is not set
# CONFIG_GPIO_SNPS_CREG is not set
# CONFIG_GPIO_SPACEMIT_K1 is not set
# CONFIG_GPIO_SPEAR_SPICS is not set
# CONFIG_GPIO_SPRD is not set
# CONFIG_GPIO_STP_XWAY is not set
# CONFIG_GPIO_SYSCON is not set
@@ -3793,10 +3845,12 @@ CONFIG_GPIO_RTD=y
# CONFIG_GPIO_UNIPHIER is not set
# CONFIG_GPIO_VF610 is not set
# CONFIG_GPIO_VISCONTI is not set
# CONFIG_GPIO_WAVESHARE_DSI_TOUCH is not set
# CONFIG_GPIO_XGENE is not set
# CONFIG_GPIO_XGENE_SB is not set
# CONFIG_GPIO_XILINX is not set
# CONFIG_GPIO_XLP is not set
# CONFIG_GPIO_ZEVIO is not set
# CONFIG_GPIO_ZYNQ is not set
# CONFIG_GPIO_ZYNQMP_MODEPIN is not set
# CONFIG_GPIO_LOONGSON1 is not set
@@ -3831,6 +3885,11 @@ CONFIG_GPIO_RTD=y
# CONFIG_GPIO_TN48M_CPLD is not set
# end of MFD GPIO expanders
#
# Auxiliary Bus GPIO drivers
#
# end of Auxiliary Bus GPIO drivers
#
# SPI GPIO expanders
#
@@ -3952,6 +4011,7 @@ CONFIG_CHARGER_GPIO=y
# CONFIG_CHARGER_UCS1002 is not set
# CONFIG_CHARGER_BD99954 is not set
# CONFIG_BATTERY_UG3105 is not set
# CONFIG_BATTERY_CHARGER_SURFACE_RT is not set
# CONFIG_FUEL_GAUGE_MM8013 is not set
CONFIG_CHARGER_RK818=y
CONFIG_HWMON=y
@@ -3983,6 +4043,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_ASC7621 is not set
# CONFIG_SENSORS_ASUS_ROG_RYUJIN is not set
# CONFIG_SENSORS_AXI_FAN_CONTROL is not set
# CONFIG_SENSORS_ARCTIC_FAN_CONTROLLER is not set
CONFIG_SENSORS_ARM_SCMI=y
CONFIG_SENSORS_ARM_SCPI=m
# CONFIG_SENSORS_ASB100 is not set
@@ -4031,6 +4092,7 @@ CONFIG_SENSORS_JC42=m
# CONFIG_SENSORS_LTC4260 is not set
# CONFIG_SENSORS_LTC4261 is not set
# CONFIG_SENSORS_LTC4282 is not set
# CONFIG_SENSORS_LTC4283 is not set
# CONFIG_SENSORS_MAX1111 is not set
# CONFIG_SENSORS_MAX127 is not set
# CONFIG_SENSORS_MAX16065 is not set
@@ -4099,6 +4161,7 @@ CONFIG_SENSORS_NTC_THERMISTOR=m
# CONFIG_SENSORS_SHTC1 is not set
# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_EMC1403 is not set
# CONFIG_SENSORS_EMC1812 is not set
# CONFIG_SENSORS_EMC2103 is not set
# CONFIG_SENSORS_EMC2305 is not set
# CONFIG_SENSORS_EMC6W201 is not set
@@ -4221,6 +4284,12 @@ CONFIG_ROCKCHIP_THERMAL=y
# CONFIG_RZG2L_THERMAL is not set
# CONFIG_RZG3E_THERMAL is not set
#
# SpacemiT thermal drivers
#
# CONFIG_SPACEMIT_K1_TSENSOR is not set
# end of SpacemiT thermal drivers
#
# NVIDIA Tegra thermal drivers
#
@@ -4339,7 +4408,6 @@ CONFIG_ARM_SMC_WATCHDOG=y
# CONFIG_EBC_C384_WDT is not set
# CONFIG_EXAR_WDT is not set
# CONFIG_F71808E_WDT is not set
# CONFIG_SC520_WDT is not set
# CONFIG_SBC_FITPC2_WATCHDOG is not set
# CONFIG_EUROTECH_WDT is not set
# CONFIG_IB700_WDT is not set
@@ -4356,7 +4424,6 @@ CONFIG_ARM_SMC_WATCHDOG=y
# CONFIG_W83627HF_WDT is not set
# CONFIG_W83877F_WDT is not set
# CONFIG_W83977F_WDT is not set
# CONFIG_MACHZ_WDT is not set
# CONFIG_SBC_EPX_C3_WATCHDOG is not set
# CONFIG_NIC7018_WDT is not set
# CONFIG_BCM47XX_WDT is not set
@@ -4370,8 +4437,11 @@ CONFIG_ARM_SMC_WATCHDOG=y
# CONFIG_LOONGSON1_WDT is not set
# CONFIG_GXP_WATCHDOG is not set
# CONFIG_MT7621_WDT is not set
# CONFIG_PIC32_WDT is not set
# CONFIG_PIC32_DMT is not set
# CONFIG_MPC5200_WDT is not set
# CONFIG_MEN_A21_WDT is not set
# CONFIG_ATCWDT200_WATCHDOG is not set
# CONFIG_STARFIVE_WATCHDOG is not set
# CONFIG_UML_WATCHDOG is not set
@@ -4380,6 +4450,7 @@ CONFIG_ARM_SMC_WATCHDOG=y
#
# CONFIG_USBPCWATCHDOG is not set
# CONFIG_KEEMBAY_WATCHDOG is not set
# CONFIG_GUNYAH_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set
CONFIG_BCMA_POSSIBLE=y
@@ -4458,7 +4529,6 @@ CONFIG_MFD_CORE=y
# CONFIG_MFD_MENF21BMC is not set
# CONFIG_MFD_NCT6694 is not set
# CONFIG_MFD_OCELOT is not set
# CONFIG_EZX_PCAP is not set
# CONFIG_MFD_CPCAP is not set
# CONFIG_MFD_VIPERBOARD is not set
# CONFIG_MFD_NTXEC is not set
@@ -4635,6 +4705,7 @@ CONFIG_REGULATOR_RK808=y
# CONFIG_REGULATOR_S2MPS11 is not set
# CONFIG_REGULATOR_S5M8767 is not set
# CONFIG_REGULATOR_SC2731 is not set
# CONFIG_REGULATOR_SGM3804 is not set
# CONFIG_REGULATOR_SLG51000 is not set
# CONFIG_REGULATOR_SPACEMIT_P1 is not set
# CONFIG_REGULATOR_STM32_BOOSTER is not set
@@ -5364,10 +5435,12 @@ CONFIG_DRM_PANEL=y
# CONFIG_DRM_PANEL_BOE_TH101MB31UIG002_28A is not set
# CONFIG_DRM_PANEL_BOE_TV101WUM_NL6 is not set
# CONFIG_DRM_PANEL_BOE_TV101WUM_LL2 is not set
# CONFIG_DRM_PANEL_CHIPWEALTH_CH13726A is not set
# CONFIG_DRM_PANEL_EBBG_FT8719 is not set
# CONFIG_DRM_PANEL_ELIDA_KD35T133 is not set
# CONFIG_DRM_PANEL_FEIXIN_K101_IM2BA02 is not set
# CONFIG_DRM_PANEL_FEIYANG_FY07024DI26A30D is not set
# CONFIG_DRM_PANEL_FOCALTECH_OTA7290B is not set
# CONFIG_DRM_PANEL_DSI_CM is not set
# CONFIG_DRM_PANEL_LVDS is not set
# CONFIG_DRM_PANEL_HIMAX_HX8279 is not set
@@ -5407,6 +5480,7 @@ CONFIG_DRM_PANEL_HIMAX_HX8394=y
# CONFIG_DRM_PANEL_NEWVISION_NV3051D is not set
# CONFIG_DRM_PANEL_NEWVISION_NV3052C is not set
# CONFIG_DRM_PANEL_NOVATEK_NT35510 is not set
# CONFIG_DRM_PANEL_NOVATEK_NT35532 is not set
# CONFIG_DRM_PANEL_NOVATEK_NT35560 is not set
# CONFIG_DRM_PANEL_NOVATEK_NT35950 is not set
# CONFIG_DRM_PANEL_NOVATEK_NT36523 is not set
@@ -5546,6 +5620,7 @@ CONFIG_DRM_UDL=m
# CONFIG_DRM_VERISILICON_DC is not set
CONFIG_DRM_VGEM=m
# CONFIG_DRM_VKMS is not set
# CONFIG_DRM_ZYNQMP_DPSUB is not set
CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
#
@@ -5617,6 +5692,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_KTZ8866 is not set
# CONFIG_BACKLIGHT_OMAP1 is not set
CONFIG_BACKLIGHT_PWM=y
# CONFIG_BACKLIGHT_MAX25014 is not set
# CONFIG_BACKLIGHT_APPLE_DWI is not set
# CONFIG_BACKLIGHT_QCOM_WLED is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
@@ -6089,6 +6165,7 @@ CONFIG_SND_SOC_BT_SCO=m
# CONFIG_SND_SOC_CS4270 is not set
# CONFIG_SND_SOC_CS4271_I2C is not set
# CONFIG_SND_SOC_CS4271_SPI is not set
# CONFIG_SND_SOC_CS42XX8_SPI is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
# CONFIG_SND_SOC_CS43130 is not set
# CONFIG_SND_SOC_CS4341 is not set
@@ -6160,6 +6237,7 @@ CONFIG_SND_SOC_RL6231=m
# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
CONFIG_SND_SOC_RT5640=m
# CONFIG_SND_SOC_RT5645 is not set
# CONFIG_SND_SOC_RT5659 is not set
# CONFIG_SND_SOC_RT9120 is not set
# CONFIG_SND_SOC_RT9123 is not set
@@ -6193,6 +6271,7 @@ CONFIG_SND_SOC_SPDIF=m
# CONFIG_SND_SOC_TAS5720 is not set
# CONFIG_SND_SOC_TAS5805M is not set
# CONFIG_SND_SOC_TAS6424 is not set
# CONFIG_SND_SOC_TAS675X is not set
# CONFIG_SND_SOC_TDA7419 is not set
# CONFIG_SND_SOC_TFA9879 is not set
# CONFIG_SND_SOC_TFA989X is not set
@@ -6354,6 +6433,7 @@ CONFIG_HID_MAGICMOUSE=m
CONFIG_HID_MALTRON=m
CONFIG_HID_MAYFLASH=m
CONFIG_HID_MEGAWORLD_FF=m
# CONFIG_HID_RAKK is not set
CONFIG_HID_REDRAGON=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MONTEREY=m
@@ -6365,6 +6445,7 @@ CONFIG_HID_NTRIG=m
CONFIG_HID_NVIDIA_SHIELD=m
# CONFIG_NVIDIA_SHIELD_FF is not set
CONFIG_HID_ORTEK=m
# CONFIG_HID_OXP is not set
CONFIG_HID_PANTHERLORD=m
CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PENMOUNT=m
@@ -7016,6 +7097,8 @@ CONFIG_LEDS_SGM3140=m
CONFIG_LEDS_GROUP_MULTICOLOR=m
# CONFIG_LEDS_KTD202X is not set
# CONFIG_LEDS_LP5812 is not set
# CONFIG_LEDS_LP5860_CORE is not set
# CONFIG_LEDS_LP5860_SPI is not set
# CONFIG_LEDS_NCP5623 is not set
# CONFIG_LEDS_PWM_MULTICOLOR is not set
# CONFIG_LEDS_QCOM_LPG is not set
@@ -7333,9 +7416,9 @@ CONFIG_SYNC_FILE=y
# CONFIG_SW_SYNC is not set
CONFIG_UDMABUF=y
# CONFIG_DMABUF_DEBUG is not set
# CONFIG_DMABUF_SELFTESTS is not set
CONFIG_DMABUF_HEAPS=y
CONFIG_DMABUF_HEAPS_SYSTEM=y
# CONFIG_DMABUF_HEAPS_SYSTEM_CC_SHARED is not set
CONFIG_DMABUF_HEAPS_CMA=y
# end of DMABUF options
@@ -7422,6 +7505,7 @@ CONFIG_ARM64_PLATFORM_DEVICES=y
# CONFIG_EC_HUAWEI_GAOKUN is not set
# CONFIG_EC_LENOVO_YOGA_C630 is not set
# CONFIG_EC_LENOVO_THINKPAD_T14S is not set
# CONFIG_EC_QCOM_HAMOA is not set
CONFIG_BCM_VIDEOCORE=y
# CONFIG_BCM2835_VCHIQ is not set
CONFIG_HAVE_CLK=y
@@ -7477,6 +7561,7 @@ CONFIG_COMMON_CLK_PWM=y
# CONFIG_COMMON_CLK_VC7 is not set
# CONFIG_COMMON_CLK_MMP2_AUDIO is not set
# CONFIG_COMMON_CLK_FIXED_MMIO is not set
# CONFIG_COMMON_CLK_K230 is not set
# CONFIG_COMMON_CLK_SP7021 is not set
# CONFIG_COMMON_CLK_RPMI is not set
# CONFIG_CLK_ACTIONS is not set
@@ -7612,7 +7697,6 @@ CONFIG_CLK_RK3562=y
CONFIG_CLK_RK3576=y
CONFIG_CLK_RK3588=y
# CONFIG_COMMON_CLK_SAMSUNG is not set
# CONFIG_EXYNOS_ACPM_CLK is not set
# CONFIG_CLK_SIFIVE is not set
# CONFIG_CLK_INTEL_SOCFPGA is not set
# CONFIG_CLK_SOPHGO_CV1800 is not set
@@ -7802,6 +7886,7 @@ CONFIG_ROCKCHIP_IOMMU=y
# CONFIG_MTK_IOMMU_V1 is not set
# CONFIG_VIRTIO_IOMMU is not set
# CONFIG_SPRD_IOMMU is not set
# CONFIG_VSI_IOMMU is not set
# CONFIG_GENERIC_PT is not set
#
@@ -8159,6 +8244,7 @@ CONFIG_HID_SENSOR_ACCEL_3D=m
# CONFIG_AD4130 is not set
# CONFIG_AD4134 is not set
# CONFIG_AD4170_4 is not set
# CONFIG_AD4691 is not set
# CONFIG_AD4695 is not set
# CONFIG_AD4851 is not set
# CONFIG_AD7091R5 is not set
@@ -8379,6 +8465,7 @@ CONFIG_IIO_ST_SENSORS_CORE=m
# CONFIG_AD5593R is not set
# CONFIG_AD5504 is not set
# CONFIG_AD5624R_SPI is not set
# CONFIG_AD5706R is not set
# CONFIG_AD9739A is not set
# CONFIG_ADI_AXI_DAC is not set
# CONFIG_LTC2688 is not set
@@ -8548,6 +8635,7 @@ CONFIG_INV_MPU6050_I2C=m
# CONFIG_APDS9300 is not set
# CONFIG_APDS9306 is not set
# CONFIG_APDS9960 is not set
# CONFIG_APDS9999 is not set
# CONFIG_AS73211 is not set
# CONFIG_BH1745 is not set
# CONFIG_BH1750 is not set
@@ -8595,6 +8683,7 @@ CONFIG_STK3310=m
# CONFIG_VCNL4000 is not set
# CONFIG_VCNL4035 is not set
# CONFIG_VEML3235 is not set
# CONFIG_VEML3328 is not set
# CONFIG_VEML6030 is not set
# CONFIG_VEML6040 is not set
# CONFIG_VEML6046X00 is not set
@@ -8618,6 +8707,7 @@ CONFIG_AK09911=m
CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
# CONFIG_MMC35240 is not set
# CONFIG_MMC5633 is not set
# CONFIG_MMC5983 is not set
CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
@@ -8648,7 +8738,6 @@ CONFIG_HID_SENSOR_DEVICE_ROTATION=m
# Triggers - standalone
#
CONFIG_IIO_HRTIMER_TRIGGER=m
CONFIG_IIO_INTERRUPT_TRIGGER=m
# CONFIG_IIO_STM32_LPTIMER_TRIGGER is not set
# CONFIG_IIO_STM32_TIMER_TRIGGER is not set
CONFIG_IIO_TIGHTLOOP_TRIGGER=m
@@ -8797,6 +8886,7 @@ CONFIG_PWM=y
# CONFIG_PWM_IMX27 is not set
# CONFIG_PWM_IMX_TPM is not set
# CONFIG_PWM_INTEL_LGM is not set
# CONFIG_PWM_IPQ is not set
# CONFIG_PWM_IQS620A is not set
# CONFIG_PWM_JZ4740 is not set
# CONFIG_PWM_KEEMBAY is not set
@@ -8848,6 +8938,7 @@ CONFIG_ARM_GIC_V3_ITS=y
CONFIG_ARM_GIC_V5=y
CONFIG_IRQ_MSI_LIB=y
# CONFIG_AL_FIC is not set
# CONFIG_ASPEED_AST2700_INTC is not set
# CONFIG_BCM2712_MIP is not set
# CONFIG_BCM7038_L1_IRQ is not set
# CONFIG_BCM7120_L2_IRQ is not set
@@ -8871,7 +8962,7 @@ CONFIG_PIC32_EVIC=y
# CONFIG_IMX_IRQSTEER is not set
# CONFIG_IMX_INTMUX is not set
# CONFIG_IMX_MU_MSI is not set
# CONFIG_STARFIVE_JH8100_INTC is not set
# CONFIG_STARFIVE_JHB100_INTC is not set
# CONFIG_EXYNOS_IRQ_COMBINER is not set
# CONFIG_MST_IRQ is not set
# CONFIG_APPLE_AIC is not set
@@ -8949,10 +9040,13 @@ CONFIG_GENERIC_PHY=y
CONFIG_GENERIC_PHY_MIPI_DPHY=y
# CONFIG_PHY_AIROHA_PCIE is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set
# CONFIG_PHY_EYEQ5_ETH is not set
# CONFIG_PHY_ECONET_PCIE is not set
# CONFIG_PHY_GOOGLE_USB is not set
# CONFIG_USB_LGM_PHY is not set
# CONFIG_PHY_LPC18XX_USB_OTG is not set
# CONFIG_PHY_NXP_PTN3222 is not set
# CONFIG_PHY_NXP_TJA1145 is not set
# CONFIG_PHY_PISTACHIO_USB is not set
# CONFIG_PHY_SNPS_EUSB2 is not set
# CONFIG_PHY_XGENE is not set
@@ -8970,6 +9064,7 @@ CONFIG_GENERIC_PHY_MIPI_DPHY=y
# CONFIG_PHY_MESON_AXG_MIPI_PCIE_ANALOG is not set
# CONFIG_PHY_MESON_AXG_MIPI_DPHY is not set
# CONFIG_PHY_APPLE_ATC is not set
# CONFIG_PHY_AX3000_EMMC is not set
#
# PHY drivers for Broadcom platforms
@@ -9000,6 +9095,7 @@ CONFIG_GENERIC_PHY_MIPI_DPHY=y
# CONFIG_PHY_FSL_IMX8M_PCIE is not set
# CONFIG_PHY_FSL_IMX8QM_HSIO is not set
# CONFIG_PHY_FSL_SAMSUNG_HDMI_PHY is not set
# CONFIG_PHY_FSL_LYNX_10G is not set
# CONFIG_PHY_FSL_LYNX_28G is not set
# CONFIG_PHY_HI6220_USB is not set
# CONFIG_PHY_HI3660_USB is not set
@@ -9093,6 +9189,7 @@ CONFIG_PHY_ROCKCHIP_USB=y
# CONFIG_PHY_SOPHGO_CV1800_USB2 is not set
# CONFIG_PHY_SPACEMIT_K1_PCIE is not set
# CONFIG_PHY_SPACEMIT_K1_USB2 is not set
# CONFIG_PHY_MIPHY28LP is not set
# CONFIG_PHY_ST_SPEAR1310_MIPHY is not set
# CONFIG_PHY_ST_SPEAR1340_MIPHY is not set
# CONFIG_PHY_STIH407_USB is not set
@@ -9104,14 +9201,15 @@ CONFIG_PHY_ROCKCHIP_USB=y
# CONFIG_PHY_STARFIVE_JH7110_USB is not set
# CONFIG_PHY_SUNPLUS_USB is not set
# CONFIG_PHY_TEGRA194_P2U is not set
# CONFIG_PHY_DA8XX_USB is not set
# CONFIG_PHY_DM816X_USB is not set
# CONFIG_PHY_AM654_SERDES is not set
# CONFIG_PHY_J721E_WIZ is not set
# CONFIG_OMAP_CONTROL_PHY is not set
# CONFIG_OMAP_USB2 is not set
# CONFIG_TI_PIPE3 is not set
# CONFIG_PHY_AM654_SERDES is not set
# CONFIG_PHY_DA8XX_USB is not set
# CONFIG_PHY_DM816X_USB is not set
# CONFIG_PHY_J721E_WIZ is not set
# CONFIG_PHY_TI_DS125DF111 is not set
# CONFIG_PHY_TUSB1210 is not set
# CONFIG_TI_PIPE3 is not set
# CONFIG_PHY_XILINX_ZYNQMP is not set
# end of PHY Subsystem
@@ -9444,10 +9542,10 @@ CONFIG_EROFS_FS_SECURITY=y
CONFIG_EROFS_FS_BACKED_BY_FILE=y
CONFIG_EROFS_FS_ZIP=y
CONFIG_EROFS_FS_ZIP_LZMA=y
CONFIG_EROFS_FS_ZIP_LZMA_DEFAULT_MAX_STREAMS=16
CONFIG_EROFS_FS_ZIP_DEFLATE=y
CONFIG_EROFS_FS_ZIP_ZSTD=y
# CONFIG_EROFS_FS_ZIP_ACCEL is not set
# CONFIG_EROFS_FS_ONDEMAND is not set
# CONFIG_EROFS_FS_PCPU_KTHREAD is not set
# CONFIG_EROFS_FS_PAGE_CACHE_SHARE is not set
CONFIG_NETWORK_FILESYSTEMS=y
@@ -9493,9 +9591,6 @@ CONFIG_SUNRPC=m
CONFIG_SUNRPC_GSS=m
CONFIG_SUNRPC_BACKCHANNEL=y
CONFIG_RPCSEC_GSS_KRB5=m
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA1=y
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_CAMELLIA=y
CONFIG_RPCSEC_GSS_KRB5_ENCTYPES_AES_SHA2=y
# CONFIG_SUNRPC_DEBUG is not set
# CONFIG_CEPH_FS is not set
CONFIG_CIFS=m
@@ -9719,7 +9814,6 @@ CONFIG_CRYPTO_CAST_COMMON=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
CONFIG_CRYPTO_DES=m
# CONFIG_CRYPTO_FCRYPT is not set
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_SM4=y
# CONFIG_CRYPTO_SM4_GENERIC is not set
@@ -9738,7 +9832,6 @@ CONFIG_CRYPTO_CTS=y
CONFIG_CRYPTO_ECB=y
# CONFIG_CRYPTO_HCTR2 is not set
CONFIG_CRYPTO_LRW=m
# CONFIG_CRYPTO_PCBC is not set
CONFIG_CRYPTO_XTS=y
# end of Length-preserving ciphers and modes
@@ -9789,7 +9882,7 @@ CONFIG_CRYPTO_CRC32=y
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_LZO=y
# CONFIG_CRYPTO_842 is not set
CONFIG_CRYPTO_LZ4=m
CONFIG_CRYPTO_LZ4=y
CONFIG_CRYPTO_LZ4HC=y
CONFIG_CRYPTO_ZSTD=y
# end of Compression
@@ -9797,21 +9890,16 @@ CONFIG_CRYPTO_ZSTD=y
#
# Random number generation
#
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_DRBG_HMAC=y
CONFIG_CRYPTO_DRBG_HASH=y
CONFIG_CRYPTO_DRBG_CTR=y
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64
CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32
CONFIG_CRYPTO_JITTERENTROPY_OSR=1
CONFIG_CRYPTO_KDF800108_CTR=y
CONFIG_CRYPTO_DF80090A=y
# end of Random number generation
#
# Userspace interface
# Userspace interface (deprecated)
#
CONFIG_CRYPTO_USER_API=m
CONFIG_CRYPTO_USER_API_HASH=m
@@ -9820,7 +9908,7 @@ CONFIG_CRYPTO_USER_API_RNG=m
# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set
CONFIG_CRYPTO_USER_API_AEAD=m
# CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE is not set
# end of Userspace interface
# end of Userspace interface (deprecated)
#
# Accelerated Cryptographic Algorithms for CPU (arm64)
@@ -9841,7 +9929,7 @@ CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_ALLWINNER is not set
# CONFIG_CRYPTO_DEV_SL3516 is not set
# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
# CONFIG_CRYPTO_DEV_EXYNOS_RNG is not set
# CONFIG_CRYPTO_DEV_OMAP is not set
# CONFIG_CRYPTO_DEV_S5P is not set
# CONFIG_CRYPTO_DEV_ATMEL_AES is not set
# CONFIG_CRYPTO_DEV_ATMEL_TDES is not set
@@ -9857,7 +9945,6 @@ CONFIG_CRYPTO_HW=y
# CONFIG_CRYPTO_DEV_QCOM_RNG is not set
# CONFIG_CRYPTO_DEV_IMGTEC_HASH is not set
# CONFIG_CRYPTO_DEV_ROCKCHIP is not set
# CONFIG_CRYPTO_DEV_XILINX_TRNG is not set
# CONFIG_CRYPTO_DEV_ZYNQMP_AES is not set
# CONFIG_CRYPTO_DEV_ZYNQMP_SHA3 is not set
CONFIG_CRYPTO_DEV_VIRTIO=m
@@ -9907,8 +9994,6 @@ CONFIG_BINARY_PRINTF=y
#
# Library routines
#
CONFIG_RAID6_PQ=y
# CONFIG_RAID6_PQ_BENCHMARK is not set
CONFIG_LINEAR_RANGES=y
# CONFIG_PACKING is not set
CONFIG_BITREVERSE=y
@@ -9968,6 +10053,9 @@ CONFIG_CRYPTO_LIB_SHA3=y
CONFIG_CRYPTO_LIB_SHA3_ARCH=y
CONFIG_XOR_BLOCKS=y
CONFIG_XOR_BLOCKS_ARCH=y
CONFIG_RAID6_PQ=y
CONFIG_RAID6_PQ_ARCH=y
# CONFIG_RAID6_PQ_BENCHMARK is not set
CONFIG_XXHASH=y
CONFIG_AUDIT_GENERIC=y
CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y
@@ -10150,7 +10238,6 @@ CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
# CONFIG_VMLINUX_MAP is not set
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_WARN_CONTEXT_ANALYSIS=y
# end of Compile-time checks and compiler options
#
@@ -10376,6 +10463,7 @@ CONFIG_SYNTH_EVENTS=y
# CONFIG_FTRACE_SORT_STARTUP_TEST is not set
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
# CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS is not set
# CONFIG_RING_BUFFER_PERSISTENT_INJECT is not set
# CONFIG_PREEMPTIRQ_DELAY_TEST is not set
# CONFIG_SYNTH_EVENT_GEN_TEST is not set
# CONFIG_KPROBE_EVENT_GEN_TEST is not set
@@ -1,7 +1,7 @@
From 5774ba8941ddb45470bfa9cc903d63e52a678b90 Mon Sep 17 00:00:00 2001
From 17c723a2fae07f0c863db891c8dea023ea13654f Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 22 May 2022 03:25:06 +0200
Subject: [PATCH 07/84] media: imx258: Add i2c supply
Subject: [PATCH 01/90] media: imx258: Add i2c supply
Sensor depends on I2C bus to be powered up to work.
@@ -1,7 +1,7 @@
From faeafc9db9ac2d7f191c09fe3edfa9891a7ddc2f Mon Sep 17 00:00:00 2001
From 3cf19a88ab0104cbb71efbd2a841f06d933eb38d Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 9 Sep 2024 16:49:41 +0200
Subject: [PATCH 08/84] media: imx258: Add reset gpio
Subject: [PATCH 02/90] media: imx258: Add reset gpio
IMX258 features a reset input that needs to be controlled when powering
up the chip.
@@ -1,7 +1,7 @@
From 9b48bbc02eb1a3ef4a734f64a95c1e843b1192d1 Mon Sep 17 00:00:00 2001
From e6a595ada31c36293478963a8d4655bdc7b57ae0 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 15 Sep 2024 23:41:50 +0200
Subject: [PATCH 09/84] media: imx258: Drop interface speed to 1224 mbps
Subject: [PATCH 03/90] media: imx258: Drop interface speed to 1224 mbps
Pinephone Pro can't do 1272 mbps. This is just a hack to make the new
upstream driver work quickly with the phone.
@@ -1,7 +1,7 @@
From a14e1b917fd223d3b5063a48c98bd92df1a97c09 Mon Sep 17 00:00:00 2001
From 6db32e3e7e73983f58719f5f20377391c4f2c2eb Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Thu, 9 Jun 2022 01:04:18 +0200
Subject: [PATCH 10/84] [DEBUG] media: imx258: Add debug register access
Subject: [PATCH 04/90] media: imx258: Add debug register access
This is useful during development.
@@ -1,7 +1,7 @@
From 0a07c82cce09160952c41a53f94acb084b8b6a3b Mon Sep 17 00:00:00 2001
From 40d935a811301fc935a6a57556cff241944b7348 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 19 Aug 2022 22:01:23 +0200
Subject: [PATCH 01/84] ASoC: codecs: rt5640: Fix output mixer input channel
Subject: [PATCH 05/90] ASoC: codecs: rt5640: Fix output mixer input channel
list
It did not match the RT5640 datasheet. Now it does.
@@ -13,7 +13,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
2 files changed, 13 insertions(+), 17 deletions(-)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index f6c6294e1588..e3a90be5294b 100644
index 74fd05176eff..2c94c81b5b59 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -651,8 +651,8 @@ static const struct snd_kcontrol_new rt5640_spk_r_mix[] = {
@@ -1,7 +1,7 @@
From 06cc977b69459292246e9b08dfe433fc43e5d5f3 Mon Sep 17 00:00:00 2001
From 4c6a567c9db84dbff9c0edbe4fb1fd5e78661367 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 20 Aug 2022 20:32:07 +0200
Subject: [PATCH 02/84] ASoC: codecs: rt5640: Fix hpout restore when lout is
Subject: [PATCH 06/90] ASoC: codecs: rt5640: Fix hpout restore when lout is
enabled
When line out and heaphones are enabled, rt5640_lout_event will cause
@@ -14,7 +14,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index e3a90be5294b..5376206e308b 100644
index 2c94c81b5b59..bbe83619d940 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -995,7 +995,8 @@ static int rt5640_lout_event(struct snd_soc_dapm_widget *w,
@@ -1,7 +1,7 @@
From 07c3af029c04522de7b35646a6374b8241fdc28c Mon Sep 17 00:00:00 2001
From c895605443f2db8864604b771a568aced2252bec Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 14 Apr 2023 22:35:37 +0200
Subject: [PATCH 03/84] ASoC: codecs: rt5640: Add input mixer input volume
Subject: [PATCH 07/90] ASoC: codecs: rt5640: Add input mixer input volume
controls
These are useful to attenuate strong signals from analog inputs.
@@ -12,7 +12,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
1 file changed, 14 insertions(+)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 5376206e308b..03d8196d218c 100644
index bbe83619d940..af7395831f89 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -342,6 +342,7 @@ static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0);
@@ -1,7 +1,7 @@
From 68b5fa757087e8fdf3fe6c7bad67c200503946f8 Mon Sep 17 00:00:00 2001
From cda7bcf085a8869ceb6be8928a286e03cd3ee4b6 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 14 Apr 2023 22:37:02 +0200
Subject: [PATCH 04/84] ASoC: codecs: rt5640: Allow to control
Subject: [PATCH 08/90] ASoC: codecs: rt5640: Allow to control
single-ended/differential mode
Not for upstream. This is useful for debugging, trying things without
@@ -13,7 +13,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
1 file changed, 4 insertions(+)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 03d8196d218c..1553a0b1f936 100644
index af7395831f89..12943724f653 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -427,6 +427,10 @@ static const struct snd_kcontrol_new rt5640_snd_controls[] = {
@@ -1,7 +1,7 @@
From 801e51af0f5dc01654220afd90a8844c8a7c0a3f Mon Sep 17 00:00:00 2001
From e479324c6b5d92bfc5b6946226f829af562c2d26 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 29 Jul 2023 17:33:24 +0200
Subject: [PATCH 05/84] ASoC: codecs: rt5640: Keep the codec enabled when idle
Subject: [PATCH 09/90] ASoC: codecs: rt5640: Keep the codec enabled when idle
This makes analog audio work even without any i2s streams being enabled.
@@ -11,10 +11,10 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
1 file changed, 2 insertions(+)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 1553a0b1f936..d6859a079538 100644
index 12943724f653..d48eafb3c243 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -2954,6 +2954,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5640 = {
@@ -2957,6 +2957,8 @@ static const struct snd_soc_component_driver soc_component_dev_rt5640 = {
.num_dapm_widgets = ARRAY_SIZE(rt5640_dapm_widgets),
.dapm_routes = rt5640_dapm_routes,
.num_dapm_routes = ARRAY_SIZE(rt5640_dapm_routes),
@@ -1,7 +1,7 @@
From fc33dcc63c708630afafbc6c0b8541680113c95a Mon Sep 17 00:00:00 2001
From dac0859ccdddd2b911655774739bdcb7a147cfc0 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Thu, 7 Sep 2023 22:58:22 +0200
Subject: [PATCH 06/84] ASoC: codecs: rt5640: Add support for power supplies
Subject: [PATCH 10/90] ASoC: codecs: rt5640: Add support for power supplies
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
@@ -9,7 +9,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
1 file changed, 16 insertions(+)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index d6859a079538..7d7dad5ed884 100644
index d48eafb3c243..8c2444e709d6 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -17,6 +17,7 @@
@@ -34,7 +34,7 @@ index d6859a079538..7d7dad5ed884 100644
static const struct regmap_range_cfg rt5640_ranges[] = {
{ .name = "PR", .range_min = RT5640_PR_BASE,
.range_max = RT5640_PR_BASE + 0xb4,
@@ -3031,6 +3039,14 @@ static int rt5640_i2c_probe(struct i2c_client *i2c)
@@ -3034,6 +3042,14 @@ static int rt5640_i2c_probe(struct i2c_client *i2c)
msleep(400);
}
@@ -1,7 +1,7 @@
From 2cfdbc171b7b0d0d03edd78fae516fa1310fcf17 Mon Sep 17 00:00:00 2001
From d071ab724dd96ea8c84f72d0b56c4477fcae6248 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 15 Aug 2022 02:23:37 +0200
Subject: [PATCH 11/84] ASoC: rockchip: Fix doubling of playback speed after
Subject: [PATCH 11/90] ASoC: rockchip: Fix doubling of playback speed after
system sleep
There is some issue with CRU on RK3399 that can be reproduced by:
@@ -24,7 +24,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
1 file changed, 7 insertions(+)
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c
index 0a0a95b4f520..6dce1db85427 100644
index 64c90316fa02..8f4ead7a297d 100644
--- a/sound/soc/rockchip/rockchip_i2s.c
+++ b/sound/soc/rockchip/rockchip_i2s.c
@@ -114,6 +114,13 @@ static int i2s_runtime_resume(struct device *dev)
@@ -1,7 +1,7 @@
From 2b6b4c84b9ee0ad52817dac708e52962033028bb Mon Sep 17 00:00:00 2001
From 276d979f4e3524c970fa89361a49cc0f0956cbfe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Mon, 22 Jun 2020 02:28:01 +0200
Subject: [PATCH 20/84] power: supply: Add support for USB_BC_ENABLED and
Subject: [PATCH 12/90] power: supply: Add support for USB_BC_ENABLED and
USB_DCP_INPUT_CURRENT_LIMIT
- USB_BC_ENABLED - enabling/disabling BC 1.2 USB type detection
@@ -1,14 +1,18 @@
From 33fe1a73fcef2b401a5b2bae0dc15809836d3604 Mon Sep 17 00:00:00 2001
From b10973c0e6b3c2fdc6fb0b26c6938762812d750e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kamil=20Trzci=C5=84ski?= <ayufan@ayufan.eu>
Date: Mon, 4 Jan 2021 17:57:49 +0100
Subject: [PATCH 21/84] mfd: rk8xx: Enable rk808-clkout2 function
Subject: [PATCH 13/90] mfd: rk8xx: Enable rk808-clkout2 function
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
???
The CLK32KOUT2 pin is shared between the 32 kHz clock output and another
function, selected by bit 1 of CLK32OUT. Select the clock function on
RK818 during pre-init, so that the rk808-clkout2 clock reaches whatever
consumes it. The gate itself is left to the clock driver.
Signed-of-by: Kamil Trzciński <ayufan@ayufan.eu>
Signed-off-by: Kamil Trzciński <ayufan@ayufan.eu>
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/mfd/rk8xx-core.c | 1 +
include/linux/mfd/rk808.h | 2 ++
@@ -1,16 +1,13 @@
From 5e2319782b4fdf05161d264dde23ac10dc1b8949 Mon Sep 17 00:00:00 2001
From b8835b540888a8db30800b0df179ee6b332d8b38 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 11 Jun 2023 18:29:24 +0200
Subject: [PATCH 22/84] power: supply: rk818_battery: Add battery charger
Subject: [PATCH 14/90] power: supply: rk818_battery: Add battery charger
driver for RK818
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
RK818 is a PMIC used on Pinephone. This is a battery charger driver
for it.
Signed-of-by: Ondřej Jirman <megi@xff.cz>
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/mfd/rk8xx-core.c | 1 +
drivers/mfd/rk8xx-i2c.c | 38 +-
@@ -88,10 +85,10 @@ index 2951b2911a37..1f5b291e127c 100644
static const struct regmap_config rk801_regmap_config = {
diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
index 83392ed6a8da..9a8401fc76fa 100644
index f0ede1cecb6a..fcceed206673 100644
--- a/drivers/power/supply/Kconfig
+++ b/drivers/power/supply/Kconfig
@@ -1165,4 +1165,12 @@ config MACSMC_POWER
@@ -1186,4 +1186,12 @@ config MACSMC_POWER
Say Y or M here if you have an Apple Silicon based Mac.
@@ -105,10 +102,10 @@ index 83392ed6a8da..9a8401fc76fa 100644
+
endif # POWER_SUPPLY
diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile
index 7ee839dca7f3..087d75a200de 100644
index 31fe4a145929..dbf07c4a962c 100644
--- a/drivers/power/supply/Makefile
+++ b/drivers/power/supply/Makefile
@@ -131,3 +131,4 @@ obj-$(CONFIG_CHARGER_QCOM_SMB2) += qcom_smbx.o
@@ -133,3 +133,4 @@ obj-$(CONFIG_CHARGER_QCOM_SMB2) += qcom_smbx.o
obj-$(CONFIG_FUEL_GAUGE_MM8013) += mm8013.o
obj-$(CONFIG_MACSMC_POWER) += macsmc-power.o
obj-$(CONFIG_CHARGER_MAX77759) += max77759_charger.o
@@ -1,13 +1,10 @@
From 4d1a2cabfffeed3f41c697d6712941adbc74f6b6 Mon Sep 17 00:00:00 2001
From 8678f78f2d44ecac1b0000e0ecef81254428d087 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 11 Apr 2026 16:38:03 +0200
Subject: [PATCH 23/84] power: supply: rk818_battery: Add code/docs for the HW
Subject: [PATCH 15/90] power: supply: rk818_battery: Add code/docs for the HW
reverse engineering
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-of-by: Ondřej Jirman <megi@xff.cz>
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/power/supply/rk818_battery.c | 246 +++++++++++++++++++++++++++
1 file changed, 246 insertions(+)
@@ -0,0 +1,39 @@
From 48a9b0b4a9024a32112883e1ff481c92b80fc528 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 25 Jul 2026 11:57:17 +0200
Subject: [PATCH 16/90] power: supply: rk818_battery: Don't override configured
charger limits in probe
Probe was overwriting CHRG_CTRL_REG1 with hardcoded 1.2A/4.3V limits
right after rk818_configure_charger() applied the limits from battery
info, so constant-charge-current-max-microamp from DT never took
effect. Just enable the charger without touching the limit fields.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/power/supply/rk818_battery.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/power/supply/rk818_battery.c b/drivers/power/supply/rk818_battery.c
index a4af2631d3bf..27da0b1d52e8 100644
--- a/drivers/power/supply/rk818_battery.c
+++ b/drivers/power/supply/rk818_battery.c
@@ -2538,11 +2538,10 @@ static int rk818_battery_probe(struct platform_device *pdev)
if (ret)
dev_warn(di->dev, "failed to enable analog control loop (%d)\n", ret);
- /* enable charger and set some reasonable limits on each boot */
- ret = regmap_write(di->regmap, RK818_CHRG_CTRL_REG1,
- RK818_CHRG_CTRL_REG1_CHRG_EN
- | (1) /* 1.2A */
- | (5 << 4) /* 4.3V */);
+ /* enable charger (limits are set up by rk818_configure_charger) */
+ ret = regmap_update_bits(di->regmap, RK818_CHRG_CTRL_REG1,
+ RK818_CHRG_CTRL_REG1_CHRG_EN,
+ RK818_CHRG_CTRL_REG1_CHRG_EN);
if (ret)
dev_warn(di->dev, "failed to enable charger (%d)\n", ret);
--
2.55.0
@@ -0,0 +1,82 @@
From 78c1af9af2666ef3e819ab384bbea8d369448a38 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 25 Jul 2026 11:44:47 +0200
Subject: [PATCH 17/90] power: supply: rk818_battery: Scale charge current by
the sense resistor value
CHRG_CUR_SEL steps are nominal values for the reference 20 mOhm sense
resistor design. The CC loop regulates the voltage drop across
SNSP/SNSN, so with the 10 mOhm resistor used on Pinephone Pro the
actual charging current is 2x the nominal value. Confirmed by
measurement on PPP against a lab PSU - 1.76A battery current with the
register set to the 1A step. Vendor BSP scales by the same factor.
Scale the requested and reported constant charge current by the sense
resistor value and warn when the requested limit is below the hardware
minimum (2A actual on 10 mOhm boards).
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/power/supply/rk818_battery.c | 31 ++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/drivers/power/supply/rk818_battery.c b/drivers/power/supply/rk818_battery.c
index 27da0b1d52e8..bc6d92890405 100644
--- a/drivers/power/supply/rk818_battery.c
+++ b/drivers/power/supply/rk818_battery.c
@@ -1764,17 +1764,40 @@ static const struct power_supply_desc rk818_usb_desc = {
* Charger / battery supply
* ========================================================================= */
+/*
+ * CHRG_CUR_SEL and CHRG_TERM_SEL step values assume the reference 20 mOhm
+ * sense resistor design. The charger regulates the voltage drop across
+ * SNSP/SNSN, so on boards with a different sense resistor the actual
+ * current is scaled by 20 mOhm / R_sense (2x on the 10 mOhm Pinephone Pro
+ * design).
+ */
+static int rk818_charger_current_to_nominal(struct rk818_battery *di, int val)
+{
+ return val * (int)di->sense_resist_mohm / 20;
+}
+
+static int rk818_charger_nominal_to_current(struct rk818_battery *di, int val)
+{
+ return val * 20 / (int)di->sense_resist_mohm;
+}
+
static int rk818_charger_set_current_max(struct rk818_battery *di, int val)
{
unsigned reg;
int ret;
- if (val < 1000000)
+ val = rk818_charger_current_to_nominal(di, val);
+
+ if (val < 1000000) {
+ dev_warn(di->dev,
+ "Requested charge current is below the hardware minimum of %d uA\n",
+ rk818_charger_nominal_to_current(di, 1000000));
reg = 0;
- else if (val < 3000000)
+ } else if (val < 3000000) {
reg = (val - 1000000) / 200000;
- else
+ } else {
reg = 10;
+ }
ret = regmap_update_bits(di->regmap, RK818_CHRG_CTRL_REG1,
RK818_CHRG_CTRL_REG1_CHRG_CUR_SEL_MASK,
@@ -1801,7 +1824,7 @@ static int rk818_charger_get_current_max(struct rk818_battery *di, int *val)
reg &= RK818_CHRG_CTRL_REG1_CHRG_CUR_SEL_MASK;
reg >>= RK818_CHRG_CTRL_REG1_CHRG_CUR_SEL_OFFSET;
- *val = 1000000 + reg * 200000;
+ *val = rk818_charger_nominal_to_current(di, 1000000 + reg * 200000);
return 0;
}
--
2.55.0
@@ -0,0 +1,76 @@
From ccc1a807db3c6d8945f1770df8e1f5e1b4ad7218 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 25 Jul 2026 11:45:56 +0200
Subject: [PATCH 18/90] power: supply: rk818_battery: Scale termination current
by the sense resistor value
CHRG_TERM_SEL steps are nominal values for the reference 20 mOhm sense
resistor design, like the CC current steps. On the 10 mOhm Pinephone
Pro design the 150 mA setting from DT terminated charging at ~300 mA
of actual current, ending the CV phase early and leaving the battery
visibly below the CV setpoint. This matches the vendor BSP, which
forces the lowest termination step on 10 mOhm boards.
Encode the termination current scaled by the sense resistor and report
the actual value. Drop the 10 mOhm special case from the fallback -
the scaling now covers it with the same resulting register values.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/power/supply/rk818_battery.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/drivers/power/supply/rk818_battery.c b/drivers/power/supply/rk818_battery.c
index bc6d92890405..d9b62d45f114 100644
--- a/drivers/power/supply/rk818_battery.c
+++ b/drivers/power/supply/rk818_battery.c
@@ -334,6 +334,7 @@ static void rk818_clrsetbits(struct rk818_battery *di, u8 reg, u8 mask, u8 val)
/* Forward declarations for helpers used before their definition. */
static int rk818_charger_set_current_max(struct rk818_battery *di, int val);
static int rk818_charger_set_voltage_max(struct rk818_battery *di, int val);
+static int rk818_charger_current_to_nominal(struct rk818_battery *di, int val);
/*
* Read a big-endian 16-bit register pair and apply linear voltage calibration.
@@ -838,14 +839,13 @@ static void rk818_configure_charger(struct rk818_battery *di)
/*
* Termination current: prefer charge_term_current_ua from the DT;
- * fall back to ~C/30 of FCC scaled by sense resistor, then encode
- * to the nearest supported FINISH_*MA step.
+ * fall back to ~C/30 of FCC. The FINISH_*MA steps are nominal
+ * values for a 20 mOhm sense resistor, so encode the value scaled
+ * by the actual sense resistor.
*/
term_ua = di->info->charge_term_current_ua;
if (term_ua <= 0) {
- if (di->sense_resist_mohm == 10)
- term_ua = 100000;
- else if (di->fcc_mah >= 5000)
+ if (di->fcc_mah >= 5000)
term_ua = 250000;
else if (di->fcc_mah >= 4000)
term_ua = 200000;
@@ -854,7 +854,8 @@ static void rk818_configure_charger(struct rk818_battery *di)
else
term_ua = 100000;
}
- finish_ma = rk818_encode_finish_current(term_ua);
+ finish_ma = rk818_encode_finish_current(
+ rk818_charger_current_to_nominal(di, term_ua));
usb_ctrl = rk818_read(di, RK818_USB_CTRL_REG);
chrg2 = rk818_read(di, RK818_CHRG_CTRL_REG2);
@@ -1947,7 +1948,8 @@ static int rk818_charger_get_property(struct power_supply *psy,
if (ret)
return ret;
- val->intval = 100000 + ((reg >> 6) & 3) * 50000;
+ val->intval = rk818_charger_nominal_to_current(di,
+ 100000 + ((reg >> 6) & 3) * 50000);
break;
case POWER_SUPPLY_PROP_HEALTH:
--
2.55.0
@@ -0,0 +1,116 @@
From 3195910b3a45a0642b2119a623ddf1e3a79e3921 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 25 Jul 2026 11:58:18 +0200
Subject: [PATCH 19/90] power: supply: rk818_battery: Compensate for IR drop
when detecting an empty battery
The gauge forced dsoc to 0 as soon as the average terminal voltage
dropped below voltage-min-design. Under high load the terminal voltage
of a battery with plenty of charge left dips below that threshold
(e.g. OCV 3.7V with a ~300mV drop at 2A), making userspace shut the
system down prematurely.
Estimate OCV by compensating the terminal voltage for the drop on the
battery internal resistance, like the coulomb counter underflow path
already does, and require the estimate to stay below the threshold for
several monitor cycles before reporting the battery as empty.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/power/supply/rk818_battery.c | 45 +++++++++++++++++++++-------
1 file changed, 34 insertions(+), 11 deletions(-)
diff --git a/drivers/power/supply/rk818_battery.c b/drivers/power/supply/rk818_battery.c
index d9b62d45f114..35eb8f2098af 100644
--- a/drivers/power/supply/rk818_battery.c
+++ b/drivers/power/supply/rk818_battery.c
@@ -156,6 +156,8 @@
/* SoC / capacity */
#define MIN_FCC 500 /* mAh */
+/* Monitor cycles the OCV estimate must stay below vmin to report empty */
+#define VMIN_EMPTY_CYCLES 3
/*
* Coulomb counter LSB denominator.
@@ -267,6 +269,8 @@ struct rk818_battery {
int fcc_mah;
int rsoc;
int dsoc;
+ /* Monitor cycles with the OCV estimate below the design minimum */
+ int vmin_cycles;
int chrg_status;
bool is_charging;
@@ -1034,6 +1038,17 @@ static void rk818_periodic_calib(struct rk818_battery *di)
* Main monitor work
* ------------------------------------------------------------------------- */
+/*
+ * Estimate OCV from the average terminal voltage by compensating for the
+ * drop on the battery internal resistance (discharge current is negative).
+ */
+static int rk818_est_ocv(struct rk818_battery *di)
+{
+ return di->voltage_avg_mv -
+ (di->info->factory_internal_resistance_uohm / 1000) *
+ di->current_avg_ma / 1000;
+}
+
/*
* rk818_update_soc - recompute rsoc from the coulomb counter and step dsoc
* toward it by at most DSOC_DELTA_MAX per call.
@@ -1041,7 +1056,7 @@ static void rk818_periodic_calib(struct rk818_battery *di)
* Special cases:
* - RK818_CHG_STS_TERMINATED: snap remain_cap to fcc so rsoc hits 100 cleanly.
* - Valid relaxed voltage: re-anchor the coulomb counter to the OCV cap.
- * - Voltage below shutdown threshold: force dsoc to 0.
+ * - OCV estimate below shutdown threshold: force dsoc to 0.
*/
static void rk818_update_soc(struct rk818_battery *di)
{
@@ -1070,12 +1085,23 @@ static void rk818_update_soc(struct rk818_battery *di)
di->remain_cap_mah = rk818_get_coulomb_cap(di);
di->rsoc = clamp(di->remain_cap_mah * 100 / DIV(di->fcc_mah), 0, 100);
- if (di->voltage_avg_mv < di->info->voltage_min_design_uv / 1000) {
- dev_dbg(di->dev,
- "voltage %d mV below shutdown threshold %u mV\n",
- di->voltage_avg_mv, di->info->voltage_min_design_uv / 1000);
- di->dsoc = 0;
- return;
+ /*
+ * Report an empty battery only when the IR compensated OCV estimate
+ * stays below the design minimum for several monitor cycles. Bare
+ * terminal voltage dips below the threshold under high load with
+ * plenty of charge left in the battery.
+ */
+ if (rk818_est_ocv(di) < di->info->voltage_min_design_uv / 1000) {
+ if (++di->vmin_cycles >= VMIN_EMPTY_CYCLES) {
+ dev_dbg(di->dev,
+ "OCV estimate %d mV below shutdown threshold %u mV\n",
+ rk818_est_ocv(di),
+ di->info->voltage_min_design_uv / 1000);
+ di->dsoc = 0;
+ return;
+ }
+ } else {
+ di->vmin_cycles = 0;
}
di->dsoc = clamp(di->dsoc +
@@ -1350,10 +1376,7 @@ static void rk818_battery_work(struct work_struct *work)
* Estimate from terminal voltage when the counter underflows.
* Subtract the resistive drop to get a rough OCV.
*/
- int est_vol = di->voltage_avg_mv -
- (di->info->factory_internal_resistance_uohm / 1000) *
- di->current_avg_ma / 1000;
- int est_cap = max(0, vol_to_cap(di, est_vol));
+ int est_cap = max(0, vol_to_cap(di, rk818_est_ocv(di)));
dev_info(di->dev,
"counter underflow, voltage estimate: %d mAh\n",
--
2.55.0
@@ -0,0 +1,163 @@
From 4495677dd25726e204a3c89a577d31bca7115e57 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 25 Jul 2026 11:59:50 +0200
Subject: [PATCH 20/90] power: supply: rk818_battery: Rework the low voltage
monitor setup
The VBAT low voltage monitor was armed at 3.4V in interrupt mode with
the interrupt unmasked at all times. The monitor watches Vsys behind
the internal battery switch with only 2ms of debouncing, so it fired
on transient load dips long before the battery was empty, causing
spurious interrupts at runtime and spurious wakeups from suspend.
While the system runs, park the monitor at 3.0V with the interrupt
masked - empty battery reporting is done by the fuel gauge and the
fixed 2.7V UVLO remains as the hardware backstop. Re-arm the monitor
at 3.4V as an unmasked wakeup source only when entering suspend, so
the system wakes up and can shut down cleanly before the battery runs
out. The vendor BSP arms the 3.4V wakeup only for suspend, too.
On the wakeup, refresh the gauge state and notify userspace right
away instead of just logging. The handler now uses the monitor work,
so set the workqueue up before requesting the interrupt in probe.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/power/supply/rk818_battery.c | 61 +++++++++++++++++++---------
1 file changed, 42 insertions(+), 19 deletions(-)
diff --git a/drivers/power/supply/rk818_battery.c b/drivers/power/supply/rk818_battery.c
index 35eb8f2098af..eee0ef08a3a3 100644
--- a/drivers/power/supply/rk818_battery.c
+++ b/drivers/power/supply/rk818_battery.c
@@ -88,6 +88,7 @@
/* RK818_VB_MON_REG */
#define PLUG_IN_STS BIT(6)
+#define RK818_VBAT_LOW_3V0 0x02
#define RK818_VBAT_LOW_3V4 0x06
/* RK818_MISC_MARK_REG */
@@ -748,19 +749,26 @@ static void rk818_configure_relax_thresholds(struct rk818_battery *di)
}
/*
- * Set the VBAT low-voltage monitor to 3.4 V in IRQ (not hard-shutdown) mode
- * so the system receives a wakeup event when the battery is nearly empty.
- * Unmask the corresponding interrupt so it is actually delivered.
+ * Configure the VBAT low-voltage monitor. The monitor watches Vsys (behind
+ * the internal battery switch) with only 2 ms of debouncing, so a 3.4 V
+ * threshold trips on transient load dips long before the battery is empty.
+ * While the system runs, park the monitor at 3.0 V in interrupt mode with
+ * the interrupt masked - empty battery reporting is done by the fuel gauge
+ * and the fixed 2.7 V UVLO remains as the hardware backstop. For suspend,
+ * re-arm it at 3.4 V as an unmasked wakeup source so the system can wake
+ * up and shut down cleanly before the battery runs out.
*/
-static void rk818_set_low_voltage_irq(struct rk818_battery *di)
+static void rk818_set_low_voltage_irq(struct rk818_battery *di, bool wakeup)
{
u8 val = rk818_read(di, RK818_VB_MON_REG);
- val = (val & ~(VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK)) |
- RK818_VBAT_LOW_3V4 | EN_VBAT_LOW_IRQ;
+ val &= ~(VBAT_LOW_VOL_MASK | VBAT_LOW_ACT_MASK);
+ val |= EN_VBAT_LOW_IRQ;
+ val |= wakeup ? RK818_VBAT_LOW_3V4 : RK818_VBAT_LOW_3V0;
rk818_write(di, RK818_VB_MON_REG, val);
- /* Clear the mask bit to enable the interrupt */
- rk818_clrsetbits(di, RK818_INT_STS_MSK_REG1, VB_LOW_INT_EN, 0);
+
+ rk818_clrsetbits(di, RK818_INT_STS_MSK_REG1, VB_LOW_INT_EN,
+ wakeup ? 0 : VB_LOW_INT_EN);
}
/*
@@ -1490,7 +1498,7 @@ static int rk818_battery_suspend(struct platform_device *pdev,
rk818_save_dsoc(di);
rk818_save_remain_cap(di);
- rk818_set_low_voltage_irq(di);
+ rk818_set_low_voltage_irq(di, true);
dev_info(di->dev,
"suspend: dsoc=%d rsoc=%d i=%d mA v=%d mV cap=%d mAh chrg=%d\n",
@@ -1531,7 +1539,7 @@ static int rk818_battery_resume(struct platform_device *pdev)
}
rk818_save_dsoc(di);
- rk818_set_low_voltage_irq(di);
+ rk818_set_low_voltage_irq(di, false);
dev_info(di->dev,
"resume: dsoc=%d rsoc=%d i=%d mA v=%d mV cap=%d mAh\n",
@@ -1553,6 +1561,15 @@ static irqreturn_t rk818_vb_low_irq(int irq, void *data)
dev_warn(di->dev, "low battery IRQ: v=%d mV dsoc=%d%%\n",
di->voltage_avg_mv, di->dsoc);
+
+ /*
+ * The interrupt is only unmasked as a suspend wakeup source. Refresh
+ * the gauge state and notify userspace right away, so that it can
+ * react to the nearly empty battery after the wakeup.
+ */
+ mod_delayed_work(di->wq, &di->work, 0);
+ power_supply_changed(di->charger_psy);
+
return IRQ_HANDLED;
}
@@ -2570,7 +2587,7 @@ static int rk818_battery_probe(struct platform_device *pdev)
rk818_init_soc(di);
rk818_configure_charger(di);
rk818_init_ts1_detect(di);
- rk818_set_low_voltage_irq(di);
+ rk818_set_low_voltage_irq(di, false);
/* disable voltage limit and enable input current limit */
ret = regmap_update_bits(di->regmap, RK818_SUP_STS_REG,
@@ -2595,27 +2612,33 @@ static int rk818_battery_probe(struct platform_device *pdev)
rk818_usb_power_external_power_changed(di->usb_psy);
+ /* The vb_lo IRQ handler uses the work, set it up first. */
+ di->wq = alloc_ordered_workqueue("rk818-bat",
+ WQ_MEM_RECLAIM | WQ_FREEZABLE);
+ if (!di->wq)
+ return -ENOMEM;
+
+ INIT_DELAYED_WORK(&di->work, rk818_battery_work);
+
vb_lo_irq = regmap_irq_get_virq(rk818->irq_data, RK818_IRQ_VB_LO);
- if (vb_lo_irq < 0)
+ if (vb_lo_irq < 0) {
+ destroy_workqueue(di->wq);
return dev_err_probe(di->dev, vb_lo_irq,
"cannot get vb_lo virq\n");
+ }
ret = devm_request_threaded_irq(di->dev, vb_lo_irq, NULL,
rk818_vb_low_irq,
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
"rk818_vb_low", di);
- if (ret)
+ if (ret) {
+ destroy_workqueue(di->wq);
return dev_err_probe(di->dev, ret,
"failed to request vb_lo IRQ\n");
+ }
enable_irq_wake(vb_lo_irq);
- di->wq = alloc_ordered_workqueue("rk818-bat",
- WQ_MEM_RECLAIM | WQ_FREEZABLE);
- if (!di->wq)
- return -ENOMEM;
-
- INIT_DELAYED_WORK(&di->work, rk818_battery_work);
queue_delayed_work(di->wq, &di->work, msecs_to_jiffies(di->monitor_ms));
dev_info(di->dev, "ready: dsoc=%d%% fcc=%d mAh sense=%u mOhm\n",
--
2.55.0
@@ -1,21 +1,20 @@
From 89a656eae098b2a5089daba98f522eb3afadfcc2 Mon Sep 17 00:00:00 2001
From 298511d788e00b23a1ec29a29656be20d95c4dcf Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 7 May 2024 18:39:12 +0200
Subject: [PATCH 24/84] Revert "usb: typec: tcpm: unregister existing source
Subject: [PATCH 21/90] Revert "usb: typec: tcpm: unregister existing source
caps before re-registration"
This reverts commit 230ecdf71a644c9c73e0e6735b33173074ae3f94.
(cherry picked from commit c64dcf8a8fb966ba3c537fd9722875a6fd1dd9ad)
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/usb/typec/tcpm/tcpm.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index 7ef746a90a17..d839c72fa8ee 100644
index 89eec20a2064..d684058cfb2e 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -3306,7 +3306,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port)
@@ -3311,7 +3311,7 @@ static int tcpm_register_source_caps(struct tcpm_port *port)
{
struct usb_power_delivery_desc desc = { port->negotiated_rev };
struct usb_power_delivery_capabilities_desc caps = { };
@@ -24,7 +23,7 @@ index 7ef746a90a17..d839c72fa8ee 100644
if (!port->partner_pd)
port->partner_pd = usb_power_delivery_register(NULL, &desc);
@@ -3316,11 +3316,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port)
@@ -3321,11 +3321,6 @@ static int tcpm_register_source_caps(struct tcpm_port *port)
memcpy(caps.pdo, port->source_caps, sizeof(u32) * port->nr_source_caps);
caps.role = TYPEC_SOURCE;
@@ -1,7 +1,7 @@
From e2139511dc9de1531aba8bed11bc20c4be3ea80a Mon Sep 17 00:00:00 2001
From 2653125a00122f0cbd9fbfad0ce7e235efa063de Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 5 Sep 2022 00:56:07 +0200
Subject: [PATCH 25/84] usb: typec: altmodes: displayport: Respect
Subject: [PATCH 22/90] usb: typec: altmodes: displayport: Respect
DP_CAP_RECEPTACLE bit
DP_CAP_RECEPTACLE swaps the meaning of pin assignments. So eg.
@@ -14,7 +14,6 @@ USB-C dock doesn't have working Alt-DP mode, in case the dock returns
wrong VDO.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 24fc74e1651b5ad8c83ac073b4327b09e09ca5a5)
---
drivers/usb/typec/altmodes/displayport.c | 54 +++++++++++++++++++++---
1 file changed, 48 insertions(+), 6 deletions(-)
@@ -1,7 +1,7 @@
From 75ba5f3d7e740107b5e471f23e06015c8ae552e3 Mon Sep 17 00:00:00 2001
From 17cce65d7feb8af435268908330adc08fb40fd78 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 14 Aug 2022 16:23:28 +0200
Subject: [PATCH 26/84] usb: typec: tcpm: Unregister altmodes before
Subject: [PATCH 23/90] usb: typec: tcpm: Unregister altmodes before
registering new ones
Just in case there are already altmodes registered. Otherwise the
@@ -30,16 +30,15 @@ kernel will fail with:
[50554.467528] typec port0-partner: failed to register alternate mode (-17)
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 30d0f1a4e665f05a1b3a455c84be97ae9011285f)
---
drivers/usb/typec/tcpm/tcpm.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index d839c72fa8ee..d30d7a0a4ac3 100644
index d684058cfb2e..31c556ee2897 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -2030,6 +2030,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port)
@@ -2035,6 +2035,9 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port)
return;
for (i = 0; i < modep->altmodes; i++) {
@@ -1,7 +1,7 @@
From dc4a3a79432f9cadd1e384806150ee0c50caac40 Mon Sep 17 00:00:00 2001
From 3c8c4d0a120155eb4caf1674485bb1efd429a892 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 18 Feb 2023 00:38:44 +0100
Subject: [PATCH 27/84] usb: typec: tcpm: Fix PD devices/capabilities
Subject: [PATCH 24/90] usb: typec: tcpm: Fix PD devices/capabilities
registration
Unregister caps before registering them. Store NULL to the struct
@@ -11,16 +11,15 @@ Fixes "sysfs: cannot create duplicate filename
'/devices/virtual/usb_power_delivery/pd1/source-capabilities'" error.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 49530effc5b55eaee992aca23ef4302c64543e6d)
---
drivers/usb/typec/tcpm/tcpm.c | 37 +++++++++++++++++++++++++++--------
1 file changed, 29 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c
index d30d7a0a4ac3..3ba7511a2785 100644
index 31c556ee2897..313204394b32 100644
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -3310,15 +3310,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port)
@@ -3315,15 +3315,22 @@ static int tcpm_register_source_caps(struct tcpm_port *port)
struct usb_power_delivery_desc desc = { port->negotiated_rev };
struct usb_power_delivery_capabilities_desc caps = { };
struct usb_power_delivery_capabilities *cap;
@@ -47,7 +46,7 @@ index d30d7a0a4ac3..3ba7511a2785 100644
cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps);
if (IS_ERR(cap))
return PTR_ERR(cap);
@@ -3333,15 +3340,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port)
@@ -3338,15 +3345,22 @@ static int tcpm_register_sink_caps(struct tcpm_port *port)
struct usb_power_delivery_desc desc = { port->negotiated_rev };
struct usb_power_delivery_capabilities_desc caps = { };
struct usb_power_delivery_capabilities *cap;
@@ -74,7 +73,7 @@ index d30d7a0a4ac3..3ba7511a2785 100644
cap = usb_power_delivery_register_capabilities(port->partner_pd, &caps);
if (IS_ERR(cap))
return PTR_ERR(cap);
@@ -7746,10 +7760,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port)
@@ -7751,10 +7765,17 @@ static int tcpm_port_register_pd(struct tcpm_port *port)
port->pds[i] = usb_power_delivery_register(port->dev, &desc);
if (IS_ERR(port->pds[i])) {
ret = PTR_ERR(port->pds[i]);
@@ -1,7 +1,7 @@
From 00a769f5a26e2aad92648a76fbe243224701322f Mon Sep 17 00:00:00 2001
From 0d237b9154ab2b92b3e114a292ad61a2e3e68e05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sun, 30 Jan 2022 23:46:37 +0100
Subject: [PATCH 28/84] usb: typec: fusb302: Slightly increase wait time for
Subject: [PATCH 25/90] usb: typec: fusb302: Slightly increase wait time for
BC1.2 result
This is not strictly necessary, but it should not hurt. Looking at
@@ -9,13 +9,12 @@ kernel log timing, the BC1.2 detection completion time and this
timeout are quite tight. This adds some headspace just in case.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit f374eae3ca1bf1b0b2fdced9bb6eb475e92110c0)
---
drivers/usb/typec/tcpm/fusb302.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index 9ab1277b7ed1..7ccdb9df7dde 100644
index 3319f6a2b0c9..aeebc650766d 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -448,9 +448,9 @@ static int tcpm_get_current_limit(struct tcpc_dev *dev)
@@ -1,20 +1,19 @@
From 52f27d4d137c4a1d5743618d8c4e5eb4b9fec2d3 Mon Sep 17 00:00:00 2001
From 96f42d339f4425be888d2cf67100ef59637a7e1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sun, 7 Nov 2021 19:28:27 +0100
Subject: [PATCH 29/84] usb: typec: fusb302: Set the current before enabling
Subject: [PATCH 26/90] usb: typec: fusb302: Set the current before enabling
pullups
This seems more reasonable and should avoid short period of incorrect
current setting being applied to CC pin.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 7c245e878d2f39174a142921dcb14bcd6fd71878)
---
drivers/usb/typec/tcpm/fusb302.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index 7ccdb9df7dde..a0382b550e3f 100644
index aeebc650766d..b2606ab58f0f 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -638,6 +638,14 @@ static int tcpm_set_cc(struct tcpc_dev *dev, enum typec_cc_status cc)
@@ -1,20 +1,19 @@
From c4f121b253c37de7cc2aee59bff8dd523dfa562d Mon Sep 17 00:00:00 2001
From 55586a7e4748a59dff1132da3aa9321bfc9dad00 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Tue, 23 Nov 2021 17:53:27 +0100
Subject: [PATCH 30/84] usb: typec: fusb302: Retry reading of CC pins status if
Subject: [PATCH 27/90] usb: typec: fusb302: Retry reading of CC pins status if
activity is detected
This is just for testing, to see if this ever happens. It should
also help when this happens.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 48646c9a3afd88fb7cf7f1941bc3666fc23deea6)
---
drivers/usb/typec/tcpm/fusb302.c | 34 ++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index a0382b550e3f..0de0dc561c8f 100644
index b2606ab58f0f..08d3f0663857 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -1248,6 +1248,36 @@ static int fusb302_handle_togdone_snk(struct fusb302_chip *chip,
@@ -1,19 +1,18 @@
From 91a432b505c84f9552e2d048b1cc4c863a84497f Mon Sep 17 00:00:00 2001
From b5c5fd36b94b1b7faa461e5e8754f2e40b7a98a4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Tue, 23 Nov 2021 17:57:06 +0100
Subject: [PATCH 31/84] usb: typec: fusb302: Update VBUS state even if VBUS
Subject: [PATCH 28/90] usb: typec: fusb302: Update VBUS state even if VBUS
interrupt is not triggered
This seems to improve robustness.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 5097f6ffab505803eae7fb02a411f0c0d9be2732)
---
drivers/usb/typec/tcpm/fusb302.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index 0de0dc561c8f..20c9790a4fad 100644
index 08d3f0663857..69f2bacec4da 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -1567,14 +1567,16 @@ static void fusb302_irq_work(struct work_struct *work)
@@ -1,7 +1,7 @@
From aec8f45667160d719b2e938ae6f48b641a4a1a6c Mon Sep 17 00:00:00 2001
From 27bdf849a02dd4f438ab42c472a7caa2bd704051 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sun, 14 Nov 2021 01:14:25 +0100
Subject: [PATCH 32/84] usb: typec: fusb302: Add OF extcon support
Subject: [PATCH 29/90] usb: typec: fusb302: Add OF extcon support
Look the extcon provider up by phandle, so a device tree can point at the
USB2 PHY that runs BC1.2 charger detection. Until now it could only be
@@ -14,13 +14,12 @@ behind a driver that waits on this one and resolving it during probe would
close that cycle.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit fe3483dca7f8cdc09397019ba583c345177f27c0)
---
drivers/usb/typec/tcpm/fusb302.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index 20c9790a4fad..756582f551be 100644
index 69f2bacec4da..9c46d1e53e98 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -443,6 +443,16 @@ static int tcpm_get_current_limit(struct tcpc_dev *dev)
@@ -1,12 +1,11 @@
From 007feb7fc3b91608df648b7e88a734907213c35a Mon Sep 17 00:00:00 2001
From cba45f15d21ee9400961ca0c37c972f7d5ac781e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sat, 20 Nov 2021 14:33:58 +0100
Subject: [PATCH 33/84] usb: typec: fusb302: Fix register definitions
Subject: [PATCH 30/90] usb: typec: fusb302: Fix register definitions
MEASURE_VBUS bit is at position 6. MDAC bits are also wrong.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 3d44e93f55bb27844753bb8b142d61ff80347f3a)
---
drivers/usb/typec/tcpm/fusb302_reg.h | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
@@ -1,19 +1,18 @@
From 415988faed2eca45c77ae549d9a5ee67df31bf7c Mon Sep 17 00:00:00 2001
From 1ebad4fc5a5243e054ae4271fd6817c52b7e9146 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sat, 20 Nov 2021 14:35:10 +0100
Subject: [PATCH 34/84] usb: typec: fusb302: Clear interrupts before we start
Subject: [PATCH 31/90] usb: typec: fusb302: Clear interrupts before we start
toggling
This is recommended by the datasheet.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 58df0404dd80e7fff7fe3e7c2e4dc1f61614153c)
---
drivers/usb/typec/tcpm/fusb302.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index 756582f551be..fe5ac6ec954a 100644
index 9c46d1e53e98..c0bbce42f251 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -511,6 +511,7 @@ static int fusb302_set_toggling(struct fusb302_chip *chip,
@@ -1,7 +1,7 @@
From 6190b644bd853b35f7908a27e17f30aa7b09a785 Mon Sep 17 00:00:00 2001
From c9ab262ca21224c9b390f637c7029d92763bbd13 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 08:45:42 +0200
Subject: [PATCH 35/84] usb: typec: fusb302: Turn off VBUS and VCONN on
Subject: [PATCH 32/90] usb: typec: fusb302: Turn off VBUS and VCONN on
shutdown
Nothing turns the port off on the way down, so a source keeps VBUS and
@@ -11,14 +11,13 @@ known and leaves the Type-C state machine attaching to a port it never
saw come up.
Drop both in a shutdown handler so a reboot looks like a cold boot.
(cherry picked from commit 4109d433711e9873a50152640c5a89cf0c91cbe2)
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/usb/typec/tcpm/fusb302.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/usb/typec/tcpm/fusb302.c b/drivers/usb/typec/tcpm/fusb302.c
index fe5ac6ec954a..ba886c949e47 100644
index c0bbce42f251..64e3e3ee0b22 100644
--- a/drivers/usb/typec/tcpm/fusb302.c
+++ b/drivers/usb/typec/tcpm/fusb302.c
@@ -1839,6 +1839,24 @@ static int fusb302_probe(struct i2c_client *client)
@@ -1,7 +1,7 @@
From 0b2ffa2ff9972608365e3f7395e2b0320e49b216 Mon Sep 17 00:00:00 2001
From 6047f1425824ceda6d2da746bab0b5c3daea8611 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 25 Jun 2024 00:00:14 +0200
Subject: [PATCH 13/84] thermal: rockchip: Add support for RV1106 SoC
Subject: [PATCH 33/90] thermal: rockchip: Add support for RV1106 SoC
This SoC includes a thermal sensor, which can be supported by this
driver. Add support for it.
@@ -1,7 +1,7 @@
From 3f80fd5e6f79dc72d866cb1869a493e1e12e350d Mon Sep 17 00:00:00 2001
From e5ba61cb3067bc2610dc8513b74b121fb69b5ce7 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 24 Jun 2024 23:59:19 +0200
Subject: [PATCH 14/84] soc: rockchip: Add support for power monitoring driver
Subject: [PATCH 34/90] soc: rockchip: Add support for power monitoring driver
This driver reports brownouts into kernel log, so that the user
can debug causes of SoC instability.
@@ -1,7 +1,7 @@
From eea2b3dbea7c25240cd594f028c5a33d92cf70df Mon Sep 17 00:00:00 2001
From ec4b1ff6725adf82506ef96b17b0f7c5ed37f499 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 25 Jun 2024 00:01:40 +0200
Subject: [PATCH 15/84] rtc: rockchip: Add support for RTC present in RV1106
Subject: [PATCH 35/90] rtc: rockchip: Add support for RTC present in RV1106
SoC
This driver adds support for RTC present in Rockchip RV1106 SoC.
@@ -15,7 +15,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
create mode 100644 drivers/rtc/rtc-rockchip.c
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 364afc73f8ab..bc755773a31d 100644
index 01def8231873..1b5534d25740 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -456,6 +456,16 @@ config RTC_DRV_RK808
@@ -36,10 +36,10 @@ index 364afc73f8ab..bc755773a31d 100644
tristate "Ricoh R2025S/D, RS5C372A/B, RV5C386, RV5C387A"
help
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index 6cf7e066314e..7428e7f6274f 100644
index 0347645b021f..2cac22454eb9 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -148,6 +148,7 @@ obj-$(CONFIG_RTC_DRV_R9701) += rtc-r9701.o
@@ -147,6 +147,7 @@ obj-$(CONFIG_RTC_DRV_R9701) += rtc-r9701.o
obj-$(CONFIG_RTC_DRV_RC5T583) += rtc-rc5t583.o
obj-$(CONFIG_RTC_DRV_RC5T619) += rtc-rc5t619.o
obj-$(CONFIG_RTC_DRV_RK808) += rtc-rk808.o
@@ -1,7 +1,7 @@
From b4c96d43b18506728a339871188209fb52fda313 Mon Sep 17 00:00:00 2001
From a41274a1947c33779421e5f2877152f04e1b2204 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 6 Apr 2025 01:59:17 +0200
Subject: [PATCH 16/84] thermal: rockchip: Add support for RK3506
Subject: [PATCH 36/90] thermal: rockchip: Add support for RK3506
Adapted from BSP.
@@ -1,12 +1,11 @@
From c82f7cbc063dbc0867e635ac66b0a3b255c03340 Mon Sep 17 00:00:00 2001
From 63fd8ceec28c63a352eb6787a0dd88832389ae29 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 4 Sep 2022 22:34:56 +0200
Subject: [PATCH 61/84] arm64: dts: rockchip: rk3399: Disable debug nodes
Subject: [PATCH 37/90] arm64: dts: rockchip: rk3399: Disable debug nodes
They hang boot with older levinboot, due to levinboot not enabling their PD.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 809a83d59f3cf8a98ff00640c0f2fdca5bde4d54)
---
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 2 ++
1 file changed, 2 insertions(+)
@@ -1,14 +1,13 @@
From d8e9516106835ed6c44c8feae5ea65e2f51f8803 Mon Sep 17 00:00:00 2001
From fbe390aae4a35657ead09eef7aa361365164274d Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 4 Sep 2022 22:49:46 +0200
Subject: [PATCH 62/84] arm64: dts: rockchip: rk3399: Add reboot mode driver
Subject: [PATCH 38/90] arm64: dts: rockchip: rk3399: Add reboot mode driver
U-Boot uses value 0xef08a53c to jump back to USB loader maskrom
mode instead of normal boot. Add support for reboot to maskrom
from the kernel.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 5c4b81ba4f37d81edd20000581625a76e724a205)
---
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 7 +++++++
1 file changed, 7 insertions(+)
@@ -1,7 +1,7 @@
From 7eb7d7f09537f33afa30863269dc72460f20420f Mon Sep 17 00:00:00 2001
From 2b99f67873b1ad56f3ff3ce94f17500610a10049 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 17:53:56 +0200
Subject: [PATCH 63/84] arm64: dts: rockchip: rk3399: Power cycle the USB3 PHY
Subject: [PATCH 39/90] arm64: dts: rockchip: rk3399: Power cycle the USB3 PHY
on role change
The Type-C PHY on RK3399 latches the plug orientation while it is being
@@ -13,7 +13,6 @@ either an extcon or a usb-role-switch to report the cable state, so it
can be set at the SoC level.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit f1061493a904add60e12c268d8efa2fefd57a421)
---
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 2 ++
1 file changed, 2 insertions(+)
@@ -1,12 +1,11 @@
From 38b6000236d688997fa789a32006dee308870488 Mon Sep 17 00:00:00 2001
From 388c338bc827982760c31a4fbc1b269849c15294 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 22 Nov 2024 23:41:48 +0100
Subject: [PATCH 64/84] arm64: dts: rockchip: rk3399: Add dmc_opp_table
Subject: [PATCH 40/90] arm64: dts: rockchip: rk3399: Add dmc_opp_table
This was removed in v6.12. Re-add it with original values.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit df46950af61c404d9b0251f674015e35f03471bd)
---
arch/arm64/boot/dts/rockchip/rk3399.dtsi | 29 ++++++++++++++++++++++++
1 file changed, 29 insertions(+)
@@ -1,12 +1,11 @@
From 92232266830ad5fddeb4cc74cef6eb9df7997df8 Mon Sep 17 00:00:00 2001
From 9097c67a0e3b33dbe82bb2520fcc8a725db964aa Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Thu, 28 Nov 2024 11:16:31 +0100
Subject: [PATCH 65/84] arm64: dts: rockchip: rk3399-s: Add DMC table
Subject: [PATCH 41/90] arm64: dts: rockchip: rk3399-s: Add DMC table
This is used by Pinephone Pro.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 456dec0546a630cdf298b9931912c03a33bce84c)
---
arch/arm64/boot/dts/rockchip/rk3399-s.dtsi | 29 ++++++++++++++++++++++
1 file changed, 29 insertions(+)
@@ -1,7 +1,7 @@
From 2aa1ea8136426e790aa954ceacfb02e7fabcc52b Mon Sep 17 00:00:00 2001
From ec6dcb2882a29bbaa8b0f714709fe957d5274ac1 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 22:43:47 +0200
Subject: [PATCH 66/84] arm64: dts: rockchip: rk3399: Number the CDN DP ports
Subject: [PATCH 42/90] arm64: dts: rockchip: rk3399: Number the CDN DP ports
Number the input port and add the output port. The binding requires both
port@0 (VOP input) and port@1 (output), but the node had only a single
@@ -16,7 +16,6 @@ numbering inside the input port is unchanged and nothing looks the ports
up by name, so boards that already enable the DP are unaffected.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit de379c02ca5cbb6763e47fd63b2b9c3e6e9053e3)
---
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
@@ -1,7 +1,7 @@
From b1c760223654de5c5a6233382a58c69b484fb003 Mon Sep 17 00:00:00 2001
From fc8b5b148fd41ba3e30ef4a0b7b36ee4de9f973f Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 19:20:33 +0200
Subject: [PATCH 67/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add Type-C
Subject: [PATCH 43/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add Type-C
port support
Pinephone Pro has:
@@ -16,7 +16,6 @@ It is also the port the phone charges from.
Let's enable it.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 4671fc6d1131e0030f6789c6b4c8ca3662d71f93)
---
.../dts/rockchip/rk3399-pinephone-pro.dts | 196 ++++++++++++++++++
1 file changed, 196 insertions(+)
@@ -1,13 +1,12 @@
From 02ced21a4dee8dcb0ecd639e940c19b32162fffe Mon Sep 17 00:00:00 2001
From 484f48fab71e0872daa36902a84cb856a472d359 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 4 Sep 2022 23:11:02 +0200
Subject: [PATCH 68/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add
Subject: [PATCH 44/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add
internal display support
Touch screen improvememtns in suspend.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit f9f2c2082f1c935a147456f2f111b0427b4fd2b3)
---
.../boot/dts/rockchip/rk3399-pinephone-pro.dts | 15 +++++++++++++++
1 file changed, 15 insertions(+)
@@ -1,7 +1,7 @@
From 49d86cb04330d0fa36e3d6762022f9dbe9f0fcab Mon Sep 17 00:00:00 2001
From 2a57888d05d26398d7621d28841c4b21e72ca4fa Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 19:20:54 +0200
Subject: [PATCH 69/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add battery
Subject: [PATCH 45/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add battery
charger support
Describe Pinephone battery and battery charger. Battery has internal
@@ -12,7 +12,6 @@ The input current limit comes from the Type-C port controller, so the
charger takes fusb302 as its power supply.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 7bb2b9094fda320593c8f9eecb961b1758fea928)
---
.../dts/rockchip/rk3399-pinephone-pro.dts | 138 ++++++++++++++++++
1 file changed, 138 insertions(+)
@@ -1,7 +1,7 @@
From af417cc22fa4dcefc192cb0390b287380e7c0d55 Mon Sep 17 00:00:00 2001
From a48365bc84ff755212c1e88bd8b9973e0c428e4f Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 4 Sep 2022 23:25:19 +0200
Subject: [PATCH 70/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add sound
Subject: [PATCH 46/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add sound
support
Add support for Pinephone Pro sound card and codec.
@@ -12,7 +12,6 @@ creates a new set of ADC keys for handling headset buttons.
Co-developed-by: Arnaud Ferraris <arnaud.ferraris@gmail.com>
Signed-off-by: Arnaud Ferraris <arnaud.ferraris@gmail.com>
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 77c8d97a95e0e4c12ea6e32fe82f1d8eab8997d2)
---
.../dts/rockchip/rk3399-pinephone-pro.dts | 117 ++++++++++++++++++
1 file changed, 117 insertions(+)
@@ -1,7 +1,7 @@
From 9e0e6397372096009e4c9c0b10447ab31c54f741 Mon Sep 17 00:00:00 2001
From 9b39821ccac12cb7112cc6f627800b60aefd122a Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 9 Sep 2022 16:39:58 +0200
Subject: [PATCH 71/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add modem
Subject: [PATCH 47/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add modem
support
- Host USB for the modem
@@ -9,7 +9,6 @@ Subject: [PATCH 71/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add modem
- Power controller driver
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 88e10241f189011429c9587ac44eea465244b8c3)
---
.../dts/rockchip/rk3399-pinephone-pro.dts | 93 +++++++++++++++++++
1 file changed, 93 insertions(+)
@@ -1,11 +1,10 @@
From bebc6b2cffeb6ab469434cb45aa631d38784ba0e Mon Sep 17 00:00:00 2001
From b211463851086a9e946f7a0139d04e2f2cef8ee9 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 20 Feb 2024 18:31:33 +0100
Subject: [PATCH 72/84] arm64: dts: rockchip: rk3399-pinephone-pro: Change
Subject: [PATCH 48/90] arm64: dts: rockchip: rk3399-pinephone-pro: Change
modem codec samplerate to 16kHz
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit b31904967a902b2dfea20b2b333c579ddd64c026)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
@@ -1,13 +1,12 @@
From 97d822b3e75c5652824bb46d18d2e1f69f795586 Mon Sep 17 00:00:00 2001
From b7e98e6e8ec9b37334b4313a86c5daf20caae450 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 11 Jun 2023 19:39:10 +0200
Subject: [PATCH 73/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add
Subject: [PATCH 49/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add
light/proximity sensor support
Pinephone Pro uses STK3311
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit e7f1d9ee0452df59f4a2f7c201db6798c39b9945)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 2 ++
1 file changed, 2 insertions(+)
@@ -1,14 +1,13 @@
From e423b662f45bf3be22e5f4b2e4602d01bbc45a66 Mon Sep 17 00:00:00 2001
From 88b434cb18dc9b65605481f72e3fe85761d332af Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 11 Jun 2023 19:39:57 +0200
Subject: [PATCH 74/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add I2C
Subject: [PATCH 50/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add I2C
supply to stk3311
It is needed to communicate with the device, when other users of
vcc3v0_touch shut down the regulator.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 658fe4ad25378e4e8c030623e7bbe11eed74498f)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 1 +
1 file changed, 1 insertion(+)
@@ -1,13 +1,12 @@
From 15b7efa2d0b5c2f75542d5d91c2b914c3131cbbe Mon Sep 17 00:00:00 2001
From fed20db6eb180246f1d871afc04127173ed8ad38 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 9 Sep 2022 16:42:07 +0200
Subject: [PATCH 75/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add
Subject: [PATCH 51/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add
magnetometer sensor support
Pinephone Pro uses AF8133J.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 6aa4fc189489549c065a1474b42f52ab3ca9f034)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 8 ++++++++
1 file changed, 8 insertions(+)
@@ -1,7 +1,7 @@
From 666714d7bfbf33f54beb6e263d4f40a6bf6c1eee Mon Sep 17 00:00:00 2001
From 34d9a490373017a54a9f652d0f742254f946579c Mon Sep 17 00:00:00 2001
From: "Leonardo G. Trombetta" <lgtrombetta@gmx.com>
Date: Mon, 13 Mar 2023 17:45:19 +0100
Subject: [PATCH 76/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add
Subject: [PATCH 52/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add
mount-matrix for magnetometer
After experimenting with the magnetometer on the Pinephone Pro I found out the
@@ -11,8 +11,8 @@ currently no `mount-matrix` info and that's why the driver reports a trivial
answer. As far as I can tell from my tests, a 90 degree clockwise rotation in
the XY plane would align it properly.
Signed-of-by: Leonardo G. Trombetta <lgtrombetta@gmx.com>
(cherry picked from commit 16abfccfc65a9022c7478e75f35d69869eae076f)
Signed-off-by: Leonardo G. Trombetta <lgtrombetta@gmx.com>
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 5 +++++
1 file changed, 5 insertions(+)
@@ -1,13 +1,12 @@
From 58499e1fac35c15529a15c7ebcd10234b50f612f Mon Sep 17 00:00:00 2001
From 33a144fcd05231eefeca9c792eb170f3b114ac3f Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 9 Sep 2022 16:42:51 +0200
Subject: [PATCH 77/84] arm64: dts: rockchip: rk3399-pinephone-pro: Enable POGO
Subject: [PATCH 53/90] arm64: dts: rockchip: rk3399-pinephone-pro: Enable POGO
pins I2C
So that userspace apps can use it.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit a91c41c0dbfacd256b8beeafe28c0bfaa3202166)
---
.../boot/dts/rockchip/rk3399-pinephone-pro.dts | 14 ++++++++++++++
1 file changed, 14 insertions(+)
@@ -1,13 +1,12 @@
From 74636887a5f0870ddd82a7e4608e131bab8b85e6 Mon Sep 17 00:00:00 2001
From 81882037b850a62f7274c808a5afaa3502eb2089 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 9 Sep 2022 16:43:39 +0200
Subject: [PATCH 78/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add
Subject: [PATCH 54/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add
pinephone keyboard support
Keyboard can be connected over I2C.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit a1e59835ded8ecf3ac45f1bfd2f46420ab96d6e9)
---
.../dts/rockchip/rk3399-pinephone-pro.dts | 145 ++++++++++++++++++
1 file changed, 145 insertions(+)
@@ -1,7 +1,7 @@
From f8b352c3ea9ab947c39843aa8613f37eff53f2d0 Mon Sep 17 00:00:00 2001
From f15af05ba8921040bd9c0c94263f486897e97caa Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Thu, 30 Mar 2023 13:45:08 +0200
Subject: [PATCH 79/84] arm64: dts: rockchip: rk3399-pinephone-pro: Switch LED
Subject: [PATCH 55/90] arm64: dts: rockchip: rk3399-pinephone-pro: Switch LED
backlight PWM from 1kHz to 20kHz
This gets rid of measurable backlight flicker, because LED driver's feedback
@@ -13,7 +13,6 @@ satisfies requirement to have duty cycle at least 250ns. Backlight LED
driver doesn't react to smaller pulses on the EN/PWM pin.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 42222d8aab5e43e8240985cb4724f503715a1054)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 8 ++++++++
1 file changed, 8 insertions(+)
@@ -1,7 +1,7 @@
From 640b4b539e3e667d3ef50026eaddf090afda0541 Mon Sep 17 00:00:00 2001
From c330fdde7bbed8addc08350c28638d885f5fed2f Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 21 May 2023 01:42:25 +0200
Subject: [PATCH 80/84] arm64: dts: rockchip: rk3399-pinephone-pro:
Subject: [PATCH 56/90] arm64: dts: rockchip: rk3399-pinephone-pro:
Pre-configure DMC
This enables dynamic DRAM reclocking. The node needs to be okayed
@@ -9,7 +9,6 @@ by U-Boot/firmware combo known to support it. Do not enable &dmc
by default.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit fbae8f31862e79cec310206acba287343d372d50)
---
.../dts/rockchip/rk3399-pinephone-pro.dts | 33 +++++++++++++++++++
arch/arm64/boot/dts/rockchip/rk3399-t.dtsi | 29 ++++++++++++++++
@@ -1,13 +1,12 @@
From 22256b60a41f614c7491cda57f62622af230ec4b Mon Sep 17 00:00:00 2001
From f20d0a69b2d03cd75a7be7c2b79da1d11a72556d Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Thu, 29 Jun 2023 16:28:08 +0200
Subject: [PATCH 81/84] arm64: dts: rockchip: rk3399-pinephone-pro: Improve SPI
Subject: [PATCH 57/90] arm64: dts: rockchip: rk3399-pinephone-pro: Improve SPI
access speed
From 300 KiB/s to 2MiB/s.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 9f2f299bd46901a703d16f39fca9b219dcc8b09c)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
@@ -1,11 +1,10 @@
From 3e56a1d0de12219b746d8959a84259c65d070d0b Mon Sep 17 00:00:00 2001
From 648be4d7f9b41b0300e1ca4e17a9f91815a4408a Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 9 Sep 2025 08:31:21 +0200
Subject: [PATCH 82/84] arm64: dts: rockchip: rk3399-pinephone-pro: Assign
Subject: [PATCH 58/90] arm64: dts: rockchip: rk3399-pinephone-pro: Assign
power supplies to audio codec
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 4400cddfa923adb0183b157603581172137f6790)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 4 ++++
1 file changed, 4 insertions(+)
@@ -1,7 +1,7 @@
From 6f77254d3715eec8649b422c06758be6965bc907 Mon Sep 17 00:00:00 2001
From c9f5ef5845e528a55ca936af042f4a82df5cb80d Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 9 Sep 2025 10:17:32 +0200
Subject: [PATCH 83/84] arm64: dts: rockchip: rk3399-pinephone-pro: Add camera
Subject: [PATCH 59/90] arm64: dts: rockchip: rk3399-pinephone-pro: Add camera
flash controller
This exact controller is not present on the board, and the real control
@@ -10,7 +10,6 @@ interface is slightly different. Don't upstream this.
It's good enough for experiments/basic lighting.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 56488ecd7be24b83bf8775c6ba5f01c9c061b42a)
---
.../dts/rockchip/rk3399-pinephone-pro.dts | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
@@ -1,7 +1,7 @@
From 8e72c70536c1349eea588a8ddf1f7f9cd383112f Mon Sep 17 00:00:00 2001
From 5f2e9bea61d1dc7afa9e72bd2d29fa9dc9e68b31 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 4 Jan 2026 23:54:58 +0100
Subject: [PATCH 84/84] arm64: dts: rockchip: rk3399-pinephone-pro: Disable
Subject: [PATCH 60/90] arm64: dts: rockchip: rk3399-pinephone-pro: Disable
interrupt GPIO for WiFi for the Pinephone Pro
This breaks at least dev version of Pinephone Pro. Or use of Pinephone
@@ -9,7 +9,6 @@ Pro
with firmware configurations that don't use OOB interrupts.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 99623d100af024386f2ca07a55b9f0148e444bfd)
---
arch/arm64/boot/dts/rockchip/rk3399-pinephone-pro.dts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
@@ -1,20 +1,21 @@
From db566db3b72a281b3e941c1070cfb30688207950 Mon Sep 17 00:00:00 2001
From 87e32bd983f5393b5d2a85c8fa5e60e4617389d4 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sat, 9 Aug 2025 10:10:42 +0200
Subject: [PATCH 12/84] Revert "usb: dwc3: Abort suspend on soft disconnect
Subject: [PATCH 61/90] Revert "usb: dwc3: Abort suspend on soft disconnect
failure"
This reverts commit 630a1dec3b0eba2a695b9063f1c205d585cbfec9.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/usb/dwc3/core.c | 9 ++-------
drivers/usb/dwc3/gadget.c | 22 +++++++++++++---------
2 files changed, 15 insertions(+), 16 deletions(-)
drivers/usb/dwc3/gadget.c | 16 ++++++++++------
2 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 65213896de99..9d4293f02c9a 100644
index ceb49f2f8004..ad52e203563b 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -2476,7 +2476,6 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
@@ -2472,7 +2472,6 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
{
u32 reg;
int i;
@@ -22,7 +23,7 @@ index 65213896de99..9d4293f02c9a 100644
if (!pm_runtime_suspended(dwc->dev) && !PMSG_IS_AUTO(msg)) {
dwc->susphy_state = (dwc3_readl(dwc, DWC3_GUSB2PHYCFG(0)) &
@@ -2495,9 +2494,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
@@ -2491,9 +2490,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
case DWC3_GCTL_PRTCAP_DEVICE:
if (pm_runtime_suspended(dwc->dev))
break;
@@ -33,7 +34,7 @@ index 65213896de99..9d4293f02c9a 100644
synchronize_irq(dwc->irq_gadget);
dwc3_core_exit(dwc);
break;
@@ -2533,9 +2530,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
@@ -2529,9 +2526,7 @@ static int dwc3_suspend_common(struct dwc3 *dwc, pm_message_t msg)
break;
if (dwc->current_otg_role == DWC3_OTG_ROLE_DEVICE) {
@@ -45,41 +46,35 @@ index 65213896de99..9d4293f02c9a 100644
}
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 3d4ca68e584c..519a1dd23a30 100644
index 1082e9c9afaa..45b468b4c9b5 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -4842,15 +4842,8 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
@@ -4874,19 +4874,23 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
int ret;
ret = dwc3_gadget_soft_disconnect(dwc);
- /*
- * Attempt to reset the controller's state. Likely no
- * communication can be established until the host
- * performs a port reset.
- */
- if (ret && dwc->softconnect) {
- dwc3_gadget_soft_connect(dwc);
- return -EAGAIN;
- }
+ if (ret)
+ goto err;
spin_lock_irqsave(&dwc->lock, flags);
if (dwc->gadget_driver)
@@ -4858,6 +4851,17 @@ int dwc3_gadget_suspend(struct dwc3 *dwc)
spin_unlock_irqrestore(&dwc->lock, flags);
return 0;
+
+ dwc3_disconnect_gadget_sleepable(dwc);
+
+ return 0;
+
+err:
+ /*
+ * Attempt to reset the controller's state. Likely no
+ * communication can be established until the host
+ * performs a port reset.
+ */
/*
* Attempt to reset the controller's state. Likely no
* communication can be established until the host
* performs a port reset.
*/
- if (ret && dwc->softconnect) {
+ if (dwc->softconnect)
+ dwc3_gadget_soft_connect(dwc);
+
dwc3_gadget_soft_connect(dwc);
- return -EAGAIN;
- }
-
- dwc3_disconnect_gadget_sleepable(dwc);
- return 0;
+ return ret;
}
@@ -1,18 +1,17 @@
From 8188ebbecf26e4e5666b5e306da6d3b675451a0c Mon Sep 17 00:00:00 2001
From 1f8ae7f533822f0195a942b255bb5107b414a615 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Fri, 21 Jun 2024 01:42:38 +0200
Subject: [PATCH 36/84] phy: rockchip-inno-usb2: Add support for RV1106/RV1103
Subject: [PATCH 62/90] phy: rockchip-inno-usb2: Add support for RV1106/RV1103
Ported from BSP driver.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 9ce7df89d6d1a4408de349a80e51dceb49d95227)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 133 ++++++++++++++++++
1 file changed, 133 insertions(+)
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 102 ++++++++++++++++++
1 file changed, 102 insertions(+)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index 8f4c08e599aa..4ef42d9affb3 100644
index 7d8a533f24ae..7831e2993b9f 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -143,6 +143,7 @@ struct rockchip_usb2phy_port_cfg {
@@ -23,23 +22,15 @@ index 8f4c08e599aa..4ef42d9affb3 100644
struct usb2phy_reg disfall_en;
struct usb2phy_reg disfall_st;
struct usb2phy_reg disfall_clr;
@@ -248,6 +249,7 @@ struct rockchip_usb2phy {
struct regmap *grf;
struct regmap *usbgrf;
struct clk_bulk_data *clks;
+ void __iomem *phy_base;
struct clk *clk480m;
struct clk_hw clk480m_hw;
int num_clks;
@@ -1284,6 +1286,7 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
@@ -1291,6 +1292,7 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
struct rockchip_usb2phy_port *rport,
struct device_node *child_np)
{
+ struct regmap *base = get_reg_base(rphy);
+ struct regmap *base = rphy->grf;
int ret, id;
rport->port_id = USB2PHY_PORT_OTG;
@@ -1317,6 +1320,23 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
@@ -1324,6 +1326,23 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy,
goto out;
}
@@ -63,85 +54,48 @@ index 8f4c08e599aa..4ef42d9affb3 100644
if (!IS_ERR(rphy->edev)) {
rport->event_nb.notifier_call = rockchip_otg_event;
@@ -1388,6 +1408,13 @@ static int rockchip_usb2phy_probe(struct platform_device *pdev)
}
}
+ if (of_device_is_compatible(np, "rockchip,rv1106-usb2phy")) {
+ rphy->phy_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
+ if (IS_ERR(rphy->phy_base))
+ return dev_err_probe(dev, PTR_ERR(rphy->phy_base),
+ "missing memory resource\n");
+ }
+
rphy->dev = dev;
phy_cfgs = device_get_match_data(dev);
rphy->chg_state = USB_CHG_STATE_UNDEFINED;
@@ -1506,6 +1533,63 @@ static int rockchip_usb2phy_probe(struct platform_device *pdev)
@@ -1504,6 +1523,40 @@ static int rockchip_usb2phy_probe(struct platform_device *pdev)
return ret;
}
+static inline void phy_clear_bits(void __iomem *reg, u32 bits)
+{
+ u32 tmp = readl(reg);
+
+ tmp &= ~bits;
+ writel(tmp, reg);
+}
+
+static inline void phy_set_bits(void __iomem *reg, u32 bits)
+{
+ u32 tmp = readl(reg);
+
+ tmp |= bits;
+ writel(tmp, reg);
+}
+
+static inline void phy_update_bits(void __iomem *reg, u32 mask, u32 val)
+{
+ u32 tmp = readl(reg);
+
+ tmp &= ~mask;
+ tmp |= val & mask;
+ writel(tmp, reg);
+}
+
+static int rv1106_usb2phy_tuning(struct rockchip_usb2phy *rphy)
+{
+ int ret = 0;
+
+ /* Always enable pre-emphasis in SOF & EOP & chirp & non-chirp state */
+ phy_update_bits(rphy->phy_base + 0x30, GENMASK(2, 0), 0x07);
+ ret |= regmap_update_bits(rphy->phy_base, 0x30, GENMASK(2, 0), 0x07);
+
+// if (rockchip_get_cpu_version()) {
+// /* Set Tx HS pre_emphasize strength to 3'b001 */
+// phy_update_bits(rphy->phy_base + 0x40, GENMASK(5, 3), (0x01 << 3));
+// ret |= regmap_update_bits(rphy->phy_base, 0x40, GENMASK(5, 3), (0x01 << 3));
+// } else {
+ /* Set Tx HS pre_emphasize strength to 3'b011 */
+ phy_update_bits(rphy->phy_base + 0x40, GENMASK(5, 3), (0x03 << 3));
+ ret |= regmap_update_bits(rphy->phy_base, 0x40, GENMASK(5, 3), (0x03 << 3));
+// }
+
+ /* Set RX Squelch trigger point configure to 4'b0000(112.5 mV) */
+ phy_update_bits(rphy->phy_base + 0x64, GENMASK(6, 3), (0x00 << 3));
+ ret |= regmap_update_bits(rphy->phy_base, 0x64, GENMASK(6, 3), (0x00 << 3));
+
+ /* Turn off differential receiver by default to save power */
+ phy_clear_bits(rphy->phy_base + 0x100, BIT(6));
+ ret |= regmap_clear_bits(rphy->phy_base, 0x100, BIT(6));
+
+ /* Set 45ohm HS ODT value to 5'b10111 to increase driver strength */
+ phy_update_bits(rphy->phy_base + 0x11c, GENMASK(4, 0), 0x17);
+ ret |= regmap_update_bits(rphy->phy_base, 0x11c, GENMASK(4, 0), 0x17);
+
+ /* Set Tx HS eye height tuning to 3'b011(462 mV)*/
+ phy_update_bits(rphy->phy_base + 0x124, GENMASK(4, 2), (0x03 << 2));
+ ret |= regmap_update_bits(rphy->phy_base, 0x124, GENMASK(4, 2), (0x03 << 2));
+
+ /* Bypass Squelch detector calibration */
+ phy_update_bits(rphy->phy_base + 0x1a4, GENMASK(7, 4), (0x01 << 4));
+ phy_update_bits(rphy->phy_base + 0x1b4, GENMASK(7, 4), (0x01 << 4));
+ ret |= regmap_update_bits(rphy->phy_base, 0x1a4, GENMASK(7, 4), (0x01 << 4));
+ ret |= regmap_update_bits(rphy->phy_base, 0x1b4, GENMASK(7, 4), (0x01 << 4));
+
+ return 0;
+ return ret;
+}
+
static int rk3128_usb2phy_tuning(struct rockchip_usb2phy *rphy)
{
/* Turn off differential receiver in suspend mode */
@@ -2243,6 +2327,54 @@ static const struct rockchip_usb2phy_cfg rk3588_phy_cfgs[] = {
@@ -2324,6 +2377,54 @@ static const struct rockchip_usb2phy_cfg rk3588_phy_cfgs[] = {
{ /* sentinel */ }
};
@@ -196,7 +150,7 @@ index 8f4c08e599aa..4ef42d9affb3 100644
static const struct rockchip_usb2phy_cfg rv1108_phy_cfgs[] = {
{
.reg = 0x100,
@@ -2299,6 +2431,7 @@ static const struct of_device_id rockchip_usb2phy_dt_match[] = {
@@ -2381,6 +2482,7 @@ static const struct of_device_id rockchip_usb2phy_dt_match[] = {
{ .compatible = "rockchip,rk3576-usb2phy", .data = &rk3576_phy_cfgs },
{ .compatible = "rockchip,rk3588-usb2phy", .data = &rk3588_phy_cfgs },
{ .compatible = "rockchip,rv1108-usb2phy", .data = &rv1108_phy_cfgs },
@@ -1,22 +1,21 @@
From 6b13b8431d4bb87a6186a4855f4855470e0c9191 Mon Sep 17 00:00:00 2001
From 7e1c947f181da3ce01aaca7c59bda2764d28135b Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 6 Apr 2025 02:00:19 +0200
Subject: [PATCH 37/84] phy: rockchip-inno-usb2: Add support for RK3506
Subject: [PATCH 63/90] phy: rockchip-inno-usb2: Add support for RK3506
Adapted from BSP.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 370adcd5cf6464363b7ceb30ebd43243b11dded1)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 115 ++++++++++++++++++
1 file changed, 115 insertions(+)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index 4ef42d9affb3..ffc0a7112b6e 100644
index 7831e2993b9f..30a907bc5c3b 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -1598,6 +1598,31 @@ static int rk3128_usb2phy_tuning(struct rockchip_usb2phy *rphy)
BIT(2) << BIT_WRITEABLE_SHIFT | 0);
@@ -1597,6 +1597,31 @@ static int rk3528_usb2phy_tuning(struct rockchip_usb2phy *rphy)
return 0;
}
+static int rk3506_usb2phy_tuning(struct rockchip_usb2phy *rphy)
@@ -24,22 +23,22 @@ index 4ef42d9affb3..ffc0a7112b6e 100644
+ int ret = 0;
+
+ /* Turn off otg0 port differential receiver in suspend mode */
+ phy_clear_bits(rphy->phy_base + 0x30, BIT(2));
+ ret |= regmap_clear_bits(rphy->phy_base, 0x30, BIT(2));
+
+ /* Turn off otg1 port differential receiver in suspend mode */
+ phy_clear_bits(rphy->phy_base + 0x430, BIT(2));
+ ret |= regmap_clear_bits(rphy->phy_base, 0x430, BIT(2));
+
+ /* Set otg0 port HS eye height to 425mv(default is 450mv) */
+ phy_update_bits(rphy->phy_base + 0x30, GENMASK(6, 4), (0x05 << 4));
+ ret |= regmap_update_bits(rphy->phy_base, 0x30, GENMASK(6, 4), (0x05 << 4));
+
+ /* Set otg1 port HS eye height to 425mv(default is 450mv) */
+ phy_update_bits(rphy->phy_base + 0x430, GENMASK(6, 4), (0x05 << 4));
+ ret |= regmap_update_bits(rphy->phy_base, 0x430, GENMASK(6, 4), (0x05 << 4));
+
+ /* Choose the Tx fs/ls data as linestate from TX driver for otg0 port */
+ phy_update_bits(rphy->phy_base + 0x94, GENMASK(6, 3), (0x03 << 3));
+ ret |= regmap_update_bits(rphy->phy_base, 0x94, GENMASK(6, 3), (0x03 << 3));
+
+ /* Choose the Tx fs/ls data as linestate from TX driver for otg1 port */
+ phy_update_bits(rphy->phy_base + 0x494, GENMASK(6, 3), (0x03 << 3));
+ ret |= regmap_update_bits(rphy->phy_base, 0x494, GENMASK(6, 3), (0x03 << 3));
+
+ return ret;
+}
@@ -47,7 +46,7 @@ index 4ef42d9affb3..ffc0a7112b6e 100644
static int rk3576_usb2phy_tuning(struct rockchip_usb2phy *rphy)
{
int ret;
@@ -2059,6 +2084,95 @@ static const struct rockchip_usb2phy_cfg rk3562_phy_cfgs[] = {
@@ -2109,6 +2134,95 @@ static const struct rockchip_usb2phy_cfg rk3562_phy_cfgs[] = {
{ /* sentinel */ }
};
@@ -143,14 +142,14 @@ index 4ef42d9affb3..ffc0a7112b6e 100644
static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = {
{
.reg = 0xfe8a0000,
@@ -2426,6 +2540,7 @@ static const struct of_device_id rockchip_usb2phy_dt_match[] = {
@@ -2476,6 +2590,7 @@ static const struct of_device_id rockchip_usb2phy_dt_match[] = {
{ .compatible = "rockchip,rk3328-usb2phy", .data = &rk3328_phy_cfgs },
{ .compatible = "rockchip,rk3366-usb2phy", .data = &rk3366_phy_cfgs },
{ .compatible = "rockchip,rk3399-usb2phy", .data = &rk3399_phy_cfgs },
+ { .compatible = "rockchip,rk3506-usb2phy", .data = &rk3506_phy_cfgs },
{ .compatible = "rockchip,rk3528-usb2phy", .data = &rk3528_phy_cfgs },
{ .compatible = "rockchip,rk3562-usb2phy", .data = &rk3562_phy_cfgs },
{ .compatible = "rockchip,rk3568-usb2phy", .data = &rk3568_phy_cfgs },
{ .compatible = "rockchip,rk3576-usb2phy", .data = &rk3576_phy_cfgs },
--
2.55.0
@@ -1,7 +1,7 @@
From 60b2f6a212c936c221b23c6051d89c23a8799d01 Mon Sep 17 00:00:00 2001
From e692226fcaac9df6f0719aa6b89d0cd67a3fa644 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Sun, 19 Jul 2026 16:21:40 +0200
Subject: [PATCH 38/84] phy: rockchip-inno-usb2: Add PHY tuning for
Subject: [PATCH 64/90] phy: rockchip-inno-usb2: Add PHY tuning for
rk3566/rk3568
Add a phy_tuning callback for the rk3566/rk3568 USB2 PHY and map its
@@ -15,13 +15,12 @@ mode works, peripheral mode fails to enumerate on the connected host.
This is visible on the PineTab2 v2.0 bottom USB-C port.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 47213f62f6eda5aca1f18251f9d4e3edd2f2712a)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 35 ++++++++++++++++++-
1 file changed, 34 insertions(+), 1 deletion(-)
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 32 +++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index ffc0a7112b6e..d9d14cc8cf79 100644
index 30a907bc5c3b..faffdef6589d 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -31,6 +31,9 @@
@@ -34,17 +33,7 @@ index ffc0a7112b6e..d9d14cc8cf79 100644
struct rockchip_usb2phy;
enum rockchip_usb2phy_port_id {
@@ -1408,7 +1411,8 @@ static int rockchip_usb2phy_probe(struct platform_device *pdev)
}
}
- if (of_device_is_compatible(np, "rockchip,rv1106-usb2phy")) {
+ if (of_device_is_compatible(np, "rockchip,rv1106-usb2phy") ||
+ of_device_is_compatible(np, "rockchip,rk3568-usb2phy")) {
rphy->phy_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
if (IS_ERR(rphy->phy_base))
return dev_err_probe(dev, PTR_ERR(rphy->phy_base),
@@ -1623,6 +1627,33 @@ static int rk3506_usb2phy_tuning(struct rockchip_usb2phy *rphy)
@@ -1622,6 +1625,33 @@ static int rk3506_usb2phy_tuning(struct rockchip_usb2phy *rphy)
return ret;
}
@@ -53,17 +42,17 @@ index ffc0a7112b6e..d9d14cc8cf79 100644
+ int ret = 0;
+
+ /* Turn off differential receiver by default to save power */
+ phy_clear_bits(rphy->phy_base + 0x30, BIT(2));
+ ret |= regmap_clear_bits(rphy->phy_base, 0x30, BIT(2));
+
+ /* Enable otg port pre-emphasis during non-chirp phase */
+ phy_update_bits(rphy->phy_base, GENMASK(2, 0), 0x04);
+ ret |= regmap_update_bits(rphy->phy_base, 0x0000, GENMASK(2, 0), 0x04);
+
+ /* Enable host port pre-emphasis during non-chirp phase */
+ phy_update_bits(rphy->phy_base + 0x0400, GENMASK(2, 0), 0x04);
+ ret |= regmap_update_bits(rphy->phy_base, 0x0400, GENMASK(2, 0), 0x04);
+
+ if (rphy->phy_cfg->reg == 0xfe8a0000) {
+ /* Set otg port HS eye height to 437.5mv (default is 400mv) */
+ phy_update_bits(rphy->phy_base + 0x30, GENMASK(6, 4), (0x06 << 4));
+ ret |= regmap_update_bits(rphy->phy_base, 0x30, GENMASK(6, 4), (0x06 << 4));
+
+ /* Set the bvalid filter time to 10ms */
+ ret |= regmap_write(rphy->grf, 0x0048, FILTER_COUNTER);
@@ -78,7 +67,7 @@ index ffc0a7112b6e..d9d14cc8cf79 100644
static int rk3576_usb2phy_tuning(struct rockchip_usb2phy *rphy)
{
int ret;
@@ -2177,6 +2208,7 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = {
@@ -2227,6 +2257,7 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = {
{
.reg = 0xfe8a0000,
.num_ports = 2,
@@ -86,7 +75,7 @@ index ffc0a7112b6e..d9d14cc8cf79 100644
.clkout_ctl = { 0x0008, 4, 4, 1, 0 },
.port_cfgs = {
[USB2PHY_PORT_OTG] = {
@@ -2220,6 +2252,7 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = {
@@ -2270,6 +2301,7 @@ static const struct rockchip_usb2phy_cfg rk3568_phy_cfgs[] = {
{
.reg = 0xfe8b0000,
.num_ports = 2,
@@ -1,18 +1,17 @@
From 6eb3bfc132cc355363c40a8f7d17ad9469c03307 Mon Sep 17 00:00:00 2001
From 05b158fe14f15ce3eae0481972fdbaccf89489a1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sat, 20 Nov 2021 14:35:52 +0100
Subject: [PATCH 39/84] drm/rockchip: cdn-dp: Disable CDN DP on disconnect
Subject: [PATCH 65/90] drm/rockchip: cdn-dp: Disable CDN DP on disconnect
Why not?
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit bf7cc5c78bcfcf8017573bbd21d69f955e47276e)
---
drivers/gpu/drm/rockchip/cdn-dp-core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index 177e30445ee8..13b83fe8feed 100644
index 190cce9530c8..0c46224c0491 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -898,6 +898,7 @@ static void cdn_dp_pd_event_work(struct work_struct *work)
@@ -1,7 +1,7 @@
From 6b34febb9343481e8b855a6f540cb9353a8ab2f6 Mon Sep 17 00:00:00 2001
From 21c92c3cb19be4e3a3f1cf6cf97ae2b5c01189e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sun, 30 Jan 2022 23:44:42 +0100
Subject: [PATCH 40/84] phy: rockchip-inno-usb2: Decrease delay between port
Subject: [PATCH 66/90] phy: rockchip-inno-usb2: Decrease delay between port
init and charger detection
When used on systems with TCPM, the charger detection via USB2.0 PHY
@@ -18,16 +18,15 @@ TCPM to be able to use its result when Rp=default is detected
via CC pins.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 41ad83ccb484296caec829ca3bc871e181a589cb)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index d9d14cc8cf79..1a01169817de 100644
index faffdef6589d..5ca155334dad 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -541,7 +541,7 @@ static int rockchip_usb2phy_init(struct phy *phy)
@@ -556,7 +556,7 @@ static int rockchip_usb2phy_init(struct phy *phy)
goto out;
schedule_delayed_work(&rport->otg_sm_work,
@@ -1,7 +1,7 @@
From e42f271b4064adc4f2bd77d27842da5ce29712eb Mon Sep 17 00:00:00 2001
From 63c227cef08c31542844f769c509978760756f2a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Fri, 4 Feb 2022 02:25:34 +0100
Subject: [PATCH 41/84] phy: rockchip-inno-usb2: More robust charger detection
Subject: [PATCH 67/90] phy: rockchip-inno-usb2: More robust charger detection
extcon updates
Make sure we always clear the charger detection results. Allow to
@@ -10,16 +10,15 @@ The previous method was smart, but assumed !vbus_branch would
always be called.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 3b27a37fbd058db8a780e2ad364728a4d4e5fd1a)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 39 +++++++++++--------
1 file changed, 23 insertions(+), 16 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index 1a01169817de..ef9f7a45c122 100644
index 5ca155334dad..5b65aabd10e4 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -661,21 +661,27 @@ static const struct phy_ops rockchip_usb2phy_ops = {
@@ -674,21 +674,27 @@ static const struct phy_ops rockchip_usb2phy_ops = {
.owner = THIS_MODULE,
};
@@ -50,7 +49,7 @@ index 1a01169817de..ef9f7a45c122 100644
delay = OTG_SCHEDULE_DELAY;
dev_dbg(&rport->phy->dev, "%s otg sm work\n",
usb_otg_state_string(rport->state));
@@ -704,14 +710,12 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
@@ -717,14 +723,12 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
dev_dbg(&rport->phy->dev, "sdp cable is connected\n");
rockchip_usb2phy_power_on(rport->phy);
rport->state = OTG_STATE_B_PERIPHERAL;
@@ -65,7 +64,7 @@ index 1a01169817de..ef9f7a45c122 100644
sch_work = true;
cable = EXTCON_CHG_USB_DCP;
break;
@@ -719,7 +723,6 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
@@ -732,7 +736,6 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
dev_dbg(&rport->phy->dev, "cdp cable is connected\n");
rockchip_usb2phy_power_on(rport->phy);
rport->state = OTG_STATE_B_PERIPHERAL;
@@ -73,7 +72,7 @@ index 1a01169817de..ef9f7a45c122 100644
sch_work = true;
cable = EXTCON_CHG_USB_CDP;
break;
@@ -731,22 +734,26 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
@@ -744,22 +747,26 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
break;
}
} else {
@@ -1,7 +1,7 @@
From ce3115635dc842403bad5d6287a765802741ae74 Mon Sep 17 00:00:00 2001
From 05c668aa82789f46b2f48ac642eb822b546faf22 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 17:46:22 +0200
Subject: [PATCH 42/84] usb: dwc3: Track the power state of usb3_generic_phy
Subject: [PATCH 68/90] usb: dwc3: Track the power state of usb3_generic_phy
The USB3 PHYs will need to be powered off and on again from within the
set_mode work, independently of the rest of the controller. There is no
@@ -10,17 +10,16 @@ actually powered to keep the phy_power_on()/phy_power_off() calls
balanced.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit bc1f2513d49d2a23ac923380f72a5ca2729122e8)
---
drivers/usb/dwc3/core.c | 10 ++++++++--
drivers/usb/dwc3/core.h | 6 ++++++
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 9d4293f02c9a..9c6bd173798c 100644
index ad52e203563b..3d669323b40d 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -919,6 +919,8 @@ static int dwc3_phy_power_on(struct dwc3 *dwc)
@@ -915,6 +915,8 @@ static int dwc3_phy_power_on(struct dwc3 *dwc)
goto err_power_off_usb3_phy;
}
@@ -29,7 +28,7 @@ index 9d4293f02c9a..9c6bd173798c 100644
return 0;
err_power_off_usb3_phy:
@@ -939,8 +941,12 @@ static void dwc3_phy_power_off(struct dwc3 *dwc)
@@ -935,8 +937,12 @@ static void dwc3_phy_power_off(struct dwc3 *dwc)
{
int i;
@@ -1,7 +1,7 @@
From c11a7d364f9ae037e9c0f9e13ec9eefcd9f526cf Mon Sep 17 00:00:00 2001
From 35ef66660a34a7f2e566f1ada9d03e7536a72607 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 22:09:48 +0200
Subject: [PATCH 43/84] usb: dwc3: Always disable SUSPHY when entering a role
Subject: [PATCH 69/90] usb: dwc3: Always disable SUSPHY when entering a role
__dwc3_set_mode() leaves the old role, which enables SUSPHY, and then
re-initializes the new one, which requires SUSPHY to be disabled. The
@@ -16,13 +16,12 @@ Disable it in __dwc3_set_mode() directly, so entering a role does not
depend on what the register happened to hold.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 01e90addf2c0380dc29c550fa565e71127217c18)
---
drivers/usb/dwc3/core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 9c6bd173798c..86ddf91ae454 100644
index 3d669323b40d..cf12ab17ccb4 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -235,7 +235,15 @@ static void __dwc3_set_mode(struct work_struct *work)
@@ -1,7 +1,7 @@
From 23e9a265cd549dbd99cf1109ad706f8a25337e42 Mon Sep 17 00:00:00 2001
From 2ef8e0cf61ae74aa2984a9b0c811b66e4d88a0e2 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 17:48:45 +0200
Subject: [PATCH 44/84] usb: dwc3: Track cable connection state separately from
Subject: [PATCH 70/90] usb: dwc3: Track cable connection state separately from
dr_role
A Type-C port can be unplugged and replugged into the same kind of port
@@ -22,14 +22,13 @@ cable from no cable use dwc3_set_mode_connected().
No functional change.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit e862414522584a466af62c055fe7e17a504c9bcd)
---
drivers/usb/dwc3/core.c | 20 ++++++++++++++++++--
drivers/usb/dwc3/core.h | 9 +++++++++
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 86ddf91ae454..a4416759fac8 100644
index cf12ab17ccb4..3d2ea52d9648 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -169,11 +169,13 @@ static void __dwc3_set_mode(struct work_struct *work)
@@ -91,7 +90,7 @@ index 86ddf91ae454..a4416759fac8 100644
u32 dwc3_core_fifo_space(struct dwc3_ep *dep, u8 type)
{
struct dwc3 *dwc = dep->dwc;
@@ -1669,6 +1679,12 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
@@ -1665,6 +1675,12 @@ static int dwc3_core_init_mode(struct dwc3 *dwc)
break;
case USB_DR_MODE_OTG:
INIT_WORK(&dwc->drd_work, __dwc3_set_mode);
@@ -1,7 +1,7 @@
From e69fe48a25b340f8f46e8144a76a04e80fb1d4fc Mon Sep 17 00:00:00 2001
From 411f3f6342130a9ad82b25c02f914d2661b33fec Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 17:52:42 +0200
Subject: [PATCH 45/84] usb: dwc3: Power cycle USB3 PHY on role/connection
Subject: [PATCH 71/90] usb: dwc3: Power cycle USB3 PHY on role/connection
change
The RK3399 Type-C PHY latches the plug orientation while it is being
@@ -38,7 +38,6 @@ fails to enable ep0out and then takes seconds to tear down again, all
of it under dwc->mutex.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 1579c94e43edea5ade9beb012a224d7a68e10774)
---
drivers/usb/dwc3/core.c | 51 ++++++++++++++++++++++++--
drivers/usb/dwc3/core.h | 7 ++++
@@ -46,7 +45,7 @@ Signed-off-by: Ondrej Jirman <megi@xff.cz>
3 files changed, 116 insertions(+), 21 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index a4416759fac8..21554e8d3ffa 100644
index 3d2ea52d9648..383c741eee96 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -193,7 +193,11 @@ static void __dwc3_set_mode(struct work_struct *work)
@@ -123,7 +122,7 @@ index a4416759fac8..21554e8d3ffa 100644
case DWC3_GCTL_PRTCAP_HOST:
ret = dwc3_host_init(dwc);
if (ret) {
@@ -1908,6 +1950,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
@@ -1904,6 +1946,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
dwc->dis_split_quirk = device_property_read_bool(dev,
"snps,dis-split-quirk");
@@ -1,7 +1,7 @@
From 364a17c0e659ea1a6a2727bdbf9936218b7d0583 Mon Sep 17 00:00:00 2001
From 0003866828edccc37cb433e28e24c8f93c8eae19 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 22:42:25 +0200
Subject: [PATCH 46/84] usb: dwc3: Register the role even when no cable is
Subject: [PATCH 72/90] usb: dwc3: Register the role even when no cable is
connected
Gating the role init on the connection state went too far. Entering a
@@ -18,13 +18,12 @@ top of a powered off USB3 PHY, which is what the gating was for.
Fixup for "usb: dwc3: Power cycle USB3 PHY on role/connection change".
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 790a415b4c5d14ae379946381f8ff40ba7c23a1f)
---
drivers/usb/dwc3/core.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 21554e8d3ffa..0e20e70b9163 100644
index 383c741eee96..88ae18073eb8 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -170,6 +170,7 @@ static void __dwc3_set_mode(struct work_struct *work)
@@ -1,7 +1,7 @@
From 45981a4220fe965b0dabd39870943e3da097e26c Mon Sep 17 00:00:00 2001
From 43079543d0c30d35e5890a1df312beb60dce644d Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 22:59:13 +0200
Subject: [PATCH 47/84] phy: rockchip-inno-usb2: Set up charger detection mode
Subject: [PATCH 73/90] phy: rockchip-inno-usb2: Set up charger detection mode
on RK3399
BC1.2 detection has to run with the transceiver held off the bus, or the
@@ -31,13 +31,12 @@ the VBUS condition from commit 7d8f725b79e3 ("phy: rockchip: inno-usb2:
fix communication disruption in gadget mode"), so they are unaffected.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit b92d132cafcf20c5cf7413f14bae79bd44e3ca84)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 81 +++++++++++++++++--
1 file changed, 73 insertions(+), 8 deletions(-)
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 80 +++++++++++++++++--
1 file changed, 73 insertions(+), 7 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index ef9f7a45c122..a138417f0b2e 100644
index 5b65aabd10e4..5b62cc4cb607 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -100,6 +100,8 @@ struct usb2phy_reg {
@@ -57,7 +56,7 @@ index ef9f7a45c122..a138417f0b2e 100644
};
/**
@@ -246,6 +249,8 @@ struct rockchip_usb2phy_port {
@@ -248,6 +251,8 @@ struct rockchip_usb2phy_port {
* @irq: muxed interrupt for single irq configuration
* @phy_cfg: phy register configuration, assigned by driver data.
* @ports: phy port instance.
@@ -66,7 +65,7 @@ index ef9f7a45c122..a138417f0b2e 100644
*/
struct rockchip_usb2phy {
struct device *dev;
@@ -260,6 +265,7 @@ struct rockchip_usb2phy {
@@ -261,6 +266,7 @@ struct rockchip_usb2phy {
enum usb_chg_state chg_state;
enum power_supply_type chg_type;
u8 dcd_retries;
@@ -74,8 +73,8 @@ index ef9f7a45c122..a138417f0b2e 100644
struct extcon_dev *edev;
int irq;
const struct rockchip_usb2phy_cfg *phy_cfg;
@@ -823,6 +829,68 @@ static void rockchip_chg_enable_secondary_det(struct rockchip_usb2phy *rphy,
property_enable(base, &rphy->phy_cfg->chg_det.idp_sink_en, en);
@@ -830,6 +836,68 @@ static void rockchip_chg_enable_secondary_det(struct rockchip_usb2phy *rphy,
property_enable(rphy->grf, &rphy->phy_cfg->chg_det.idp_sink_en, en);
}
+/*
@@ -101,7 +100,7 @@ index ef9f7a45c122..a138417f0b2e 100644
+ bool vbus_attach)
+{
+ const struct usb2phy_reg *chg_mode = &rphy->phy_cfg->chg_det.chg_mode;
+ struct regmap *base = get_reg_base(rphy);
+ struct regmap *base = rphy->grf;
+
+ if (!rockchip_chg_has_chg_mode(rphy)) {
+ if (!vbus_attach)
@@ -125,7 +124,7 @@ index ef9f7a45c122..a138417f0b2e 100644
+ bool vbus_attach)
+{
+ const struct usb2phy_reg *chg_mode = &rphy->phy_cfg->chg_det.chg_mode;
+ struct regmap *base = get_reg_base(rphy);
+ struct regmap *base = rphy->grf;
+ unsigned int mask;
+
+ if (!rockchip_chg_has_chg_mode(rphy)) {
@@ -143,39 +142,31 @@ index ef9f7a45c122..a138417f0b2e 100644
#define CHG_DCD_POLL_TIME (100 * HZ / 1000)
#define CHG_DCD_MAX_RETRIES 6
#define CHG_PRIMARY_DET_TIME (40 * HZ / 1000)
@@ -832,7 +900,6 @@ static void rockchip_chg_detect_work(struct work_struct *work)
struct rockchip_usb2phy_port *rport =
container_of(work, struct rockchip_usb2phy_port, chg_work.work);
struct rockchip_usb2phy *rphy = dev_get_drvdata(rport->phy->dev.parent);
- struct regmap *base = get_reg_base(rphy);
bool is_dcd, tmout, vout, vbus_attach;
unsigned long delay;
@@ -844,9 +911,8 @@ static void rockchip_chg_detect_work(struct work_struct *work)
@@ -850,9 +918,8 @@ static void rockchip_chg_detect_work(struct work_struct *work)
case USB_CHG_STATE_UNDEFINED:
if (!rport->suspended && !vbus_attach)
rockchip_usb2phy_power_off(rport->phy);
- /* put the controller in non-driving mode */
- if (!vbus_attach)
- property_enable(base, &rphy->phy_cfg->chg_det.opmode, false);
- property_enable(rphy->grf, &rphy->phy_cfg->chg_det.opmode, false);
+ /* put the controller in charger detection mode */
+ rockchip_chg_enter_mode(rphy, rport, vbus_attach);
/* Start DCD processing stage 1 */
rockchip_chg_enable_dcd(rphy, true);
rphy->chg_state = USB_CHG_STATE_WAIT_FOR_DCD;
@@ -908,9 +974,8 @@ static void rockchip_chg_detect_work(struct work_struct *work)
@@ -914,9 +981,8 @@ static void rockchip_chg_detect_work(struct work_struct *work)
rphy->chg_state = USB_CHG_STATE_DETECTED;
fallthrough;
case USB_CHG_STATE_DETECTED:
- /* put the controller in normal mode */
- if (!vbus_attach)
- property_enable(base, &rphy->phy_cfg->chg_det.opmode, true);
- property_enable(rphy->grf, &rphy->phy_cfg->chg_det.opmode, true);
+ /* put the controller back in normal mode */
+ rockchip_chg_leave_mode(rphy, rport, vbus_attach);
rockchip_usb2phy_otg_sm_work(&rport->otg_sm_work.work);
dev_dbg(&rport->phy->dev, "charger = %s\n",
chg_to_string(rphy->chg_type));
@@ -2029,7 +2094,7 @@ static const struct rockchip_usb2phy_cfg rk3399_phy_cfgs[] = {
@@ -2027,7 +2093,7 @@ static const struct rockchip_usb2phy_cfg rk3399_phy_cfgs[] = {
}
},
.chg_det = {
@@ -1,7 +1,7 @@
From 9d5233641333d58478d65d40101e36fdf2c8bbac Mon Sep 17 00:00:00 2001
From 652933eb6956adb5491cfce54d687606a56fbba7 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 23:15:39 +0200
Subject: [PATCH 48/84] usb: dwc3: Do not re-register the gadget on cable
Subject: [PATCH 74/90] usb: dwc3: Do not re-register the gadget on cable
events
The role init and exit ended up with different conditions: init ran for
@@ -30,13 +30,12 @@ Fixup for "usb: dwc3: Register the role even when no cable is
connected".
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit d0b96cd58562bb50012a08ab1bd44389abfd8c28)
---
drivers/usb/dwc3/core.c | 40 +++++++++++++++++++++++++++-------------
1 file changed, 27 insertions(+), 13 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 0e20e70b9163..18d50856d3b6 100644
index 88ae18073eb8..b1e6178cec7b 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -197,10 +197,19 @@ static void __dwc3_set_mode(struct work_struct *work)
@@ -1,7 +1,7 @@
From bedb89fb5c6876434dad80435ede0a71f55f446a Mon Sep 17 00:00:00 2001
From 202d000ca349e0b89d686acb6b783c3a741f8503 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 23:39:05 +0200
Subject: [PATCH 49/84] phy: rockchip-typec: Support a Type-C orientation
Subject: [PATCH 75/90] phy: rockchip-typec: Support a Type-C orientation
switch
Register a typec_switch when the DT node is marked as one, and take the
@@ -18,7 +18,6 @@ cable is gone: the PHY is powered off through phy_power_off() then, so
there is no reason to clear it to a value nothing should read.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit ba3d9cfa99e2ba9a5543aaef821faa82187c1ac8)
---
drivers/phy/rockchip/phy-rockchip-typec.c | 80 +++++++++++++++++++++--
1 file changed, 73 insertions(+), 7 deletions(-)
@@ -1,7 +1,7 @@
From 0690ea7581e1b3d7a07d92f291874d423d7b5e5b Mon Sep 17 00:00:00 2001
From b4a8b4cde3e868ffa4a988a6e1a8c56d2903a7d8 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 20 Jul 2026 23:50:24 +0200
Subject: [PATCH 50/84] phy: rockchip-typec: Support a Type-C mode mux
Subject: [PATCH 76/90] phy: rockchip-typec: Support a Type-C mode mux
Register a typec_mux when the DT node is marked as one, and take what the
lanes carry from it. Map TYPEC_STATE_USB, TYPEC_DP_STATE_C/E and
@@ -18,7 +18,6 @@ it: MODE_UFP_USB and MODE_DFP_USB are only ever tested together, so
report USB as MODE_DFP_USB throughout.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit f7dfd3a3fec221817aa35d3ec00130fe5dd5b998)
---
drivers/phy/rockchip/phy-rockchip-typec.c | 145 +++++++++++++++++-----
1 file changed, 117 insertions(+), 28 deletions(-)
@@ -1,7 +1,7 @@
From c5d1fecc501008af68641d44c93b8bb81cceca5f Mon Sep 17 00:00:00 2001
From 579865b00acc1987a998c47e83dd0bf9fd8adc00 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 23:15:20 +0200
Subject: [PATCH 51/84] phy: rockchip-typec: Publish the DP lane count
Subject: [PATCH 77/90] phy: rockchip-typec: Publish the DP lane count
Publish the negotiated lane count from the mode mux with
phy_set_bus_width(): four lanes for DP alone, two when it shares the
@@ -15,7 +15,6 @@ drive", sparing it from telling "no alternate mode" from "alternate mode
without a sink".
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 23febe23e8959ed5219186aa6892d8b42268fd18)
---
drivers/phy/rockchip/phy-rockchip-typec.c | 28 ++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
@@ -1,7 +1,7 @@
From dde8b3728ec4e6844e479e989e6492cbda1074c1 Mon Sep 17 00:00:00 2001
From 4716c2344c86367d08fd0eba84a107785f3bdd64 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 23:17:37 +0200
Subject: [PATCH 52/84] drm/rockchip: cdn-dp: Support ports driven by a Type-C
Subject: [PATCH 78/90] drm/rockchip: cdn-dp: Support ports driven by a Type-C
PHY
Support a Type-C port whose lanes reach the connector through a Type-C
@@ -20,13 +20,12 @@ A port now needs a PHY and nothing else. Ports that have an extcon keep
reading all of it from there.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit a0dfa262516e05183118110165ce9744e07ab95f)
---
drivers/gpu/drm/rockchip/cdn-dp-core.c | 69 ++++++++++++++++++++++----
1 file changed, 60 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/rockchip/cdn-dp-core.c b/drivers/gpu/drm/rockchip/cdn-dp-core.c
index 13b83fe8feed..08257a3d1dbd 100644
index 0c46224c0491..f58e3f579d86 100644
--- a/drivers/gpu/drm/rockchip/cdn-dp-core.c
+++ b/drivers/gpu/drm/rockchip/cdn-dp-core.c
@@ -157,6 +157,15 @@ static int cdn_dp_get_port_lanes(struct cdn_dp_port *port)
@@ -130,7 +129,7 @@ index 13b83fe8feed..08257a3d1dbd 100644
.edid_read = cdn_dp_bridge_edid_read,
.atomic_enable = cdn_dp_bridge_atomic_enable,
.atomic_disable = cdn_dp_bridge_atomic_disable,
@@ -1030,6 +1074,9 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
@@ -1028,6 +1072,9 @@ static int cdn_dp_bind(struct device *dev, struct device *master, void *data)
for (i = 0; i < dp->ports; i++) {
port = dp->port[i];
@@ -140,7 +139,7 @@ index 13b83fe8feed..08257a3d1dbd 100644
port->event_nb.notifier_call = cdn_dp_pd_event;
ret = devm_extcon_register_notifier(dp->dev, port->extcon,
EXTCON_DISP_DP,
@@ -1122,9 +1169,13 @@ static int cdn_dp_probe(struct platform_device *pdev)
@@ -1120,9 +1167,13 @@ static int cdn_dp_probe(struct platform_device *pdev)
PTR_ERR(phy) == -EPROBE_DEFER)
return -EPROBE_DEFER;
@@ -155,7 +154,7 @@ index 13b83fe8feed..08257a3d1dbd 100644
port = devm_kzalloc(dev, sizeof(*port), GFP_KERNEL);
if (!port)
return -ENOMEM;
@@ -1137,7 +1188,7 @@ static int cdn_dp_probe(struct platform_device *pdev)
@@ -1135,7 +1186,7 @@ static int cdn_dp_probe(struct platform_device *pdev)
}
if (!dp->ports) {
@@ -1,7 +1,7 @@
From 642e715b3a43fe3a73dfb1f4a01e28f57916e72f Mon Sep 17 00:00:00 2001
From c9215a902f9ebf54e465e72243dec21d712a1276 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 00:20:41 +0200
Subject: [PATCH 53/84] phy: rockchip-inno-usb2: Learn the host role from
Subject: [PATCH 79/90] phy: rockchip-inno-usb2: Learn the host role from
phy_set_mode()
The OTG state machine finds out whether the port is acting as a host by
@@ -21,16 +21,15 @@ EXTCON_USB_HOST this driver published to its own extcon device, so the
ID pin never reached the controller there to begin with.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 9d26be6b0bb1456a25fc39aa91dcaaa072c8bbad)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 59 ++++++++++++++++++-
1 file changed, 57 insertions(+), 2 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index a138417f0b2e..63acee6a4310 100644
index 5b62cc4cb607..bbb119f34a88 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -229,6 +229,7 @@ struct rockchip_usb2phy_port {
@@ -231,6 +231,7 @@ struct rockchip_usb2phy_port {
struct notifier_block event_nb;
enum usb_otg_state state;
enum usb_dr_mode mode;
@@ -38,7 +37,7 @@ index a138417f0b2e..63acee6a4310 100644
};
/**
@@ -267,6 +268,8 @@ struct rockchip_usb2phy {
@@ -268,6 +269,8 @@ struct rockchip_usb2phy {
u8 dcd_retries;
unsigned int chg_mode_cfg;
struct extcon_dev *edev;
@@ -47,7 +46,7 @@ index a138417f0b2e..63acee6a4310 100644
int irq;
const struct rockchip_usb2phy_cfg *phy_cfg;
struct rockchip_usb2phy_port ports[USB2PHY_NUM_PORTS];
@@ -456,6 +459,7 @@ static int rockchip_usb2phy_extcon_register(struct rockchip_usb2phy *rphy)
@@ -471,6 +474,7 @@ static int rockchip_usb2phy_extcon_register(struct rockchip_usb2phy *rphy)
if (IS_ERR(edev))
return dev_err_probe(rphy->dev, PTR_ERR(edev),
"invalid or missing extcon\n");
@@ -55,7 +54,7 @@ index a138417f0b2e..63acee6a4310 100644
} else {
/* Initialize extcon device */
edev = devm_extcon_dev_allocate(rphy->dev,
@@ -659,11 +663,62 @@ static int rockchip_usb2phy_exit(struct phy *phy)
@@ -672,11 +676,62 @@ static int rockchip_usb2phy_exit(struct phy *phy)
return 0;
}
@@ -118,7 +117,7 @@ index a138417f0b2e..63acee6a4310 100644
.owner = THIS_MODULE,
};
@@ -699,7 +754,7 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
@@ -712,7 +767,7 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
rockchip_usb2phy_power_off(rport->phy);
fallthrough;
case OTG_STATE_B_IDLE:
@@ -127,7 +126,7 @@ index a138417f0b2e..63acee6a4310 100644
dev_dbg(&rport->phy->dev, "usb otg host connect\n");
rport->state = OTG_STATE_A_HOST;
rockchip_usb2phy_power_on(rport->phy);
@@ -774,7 +829,7 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
@@ -787,7 +842,7 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
sch_work = true;
break;
case OTG_STATE_A_HOST:
@@ -1,7 +1,7 @@
From 8a289a732202204e0c19c6f38da071d3b4e96f7a Mon Sep 17 00:00:00 2001
From e258587f64983849231feaa678727911e079a6f5 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 07:22:48 +0200
Subject: [PATCH 54/84] usb: dwc3: Tell the UDC core when there is no cable
Subject: [PATCH 80/90] usb: dwc3: Tell the UDC core when there is no cable
The USB3 PHY is powered off while no cable is connected, so anything
that touches the endpoints in that state fails. Binding a gadget driver
@@ -39,13 +39,12 @@ the UDC connect lock, so a quick unplug also waits for an in-flight
connect instead of resetting the core under it.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 406dea5dc6471bc2d8809df426f32445ed1d39a1)
---
drivers/usb/dwc3/core.c | 35 ++++++++++++++++++++++++++++++++---
1 file changed, 32 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 18d50856d3b6..2c1cada5d637 100644
index b1e6178cec7b..7e86dce3d317 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -204,8 +204,20 @@ static void __dwc3_set_mode(struct work_struct *work)
@@ -1,7 +1,7 @@
From b715f77b5a03b5ff3f5ec9d315424478e933a445 Mon Sep 17 00:00:00 2001
From eb64fd87d66b565b4448a0527c257edbf392fdd5 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 07:35:49 +0200
Subject: [PATCH 55/84] phy: rockchip-inno-usb2: Do not run charger detection
Subject: [PATCH 81/90] phy: rockchip-inno-usb2: Do not run charger detection
as a host
VBUS comes up before anything says which way round the port is: the
@@ -32,16 +32,15 @@ window between VBUS and the role being known, but nothing acts on
detection until it finishes, and it no longer finishes.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit b4a35830d0c92b801c7878f1f2f1984516d53a5e)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 40 +++++++++++++++++++
1 file changed, 40 insertions(+)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index 63acee6a4310..49994c2390b7 100644
index bbb119f34a88..96d0042027a4 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -680,6 +680,9 @@ static bool rockchip_usb2phy_host_mode(struct rockchip_usb2phy *rphy,
@@ -693,6 +693,9 @@ static bool rockchip_usb2phy_host_mode(struct rockchip_usb2phy *rphy,
return extcon_get_state(rphy->edev, EXTCON_USB_HOST) > 0;
}
@@ -51,7 +50,7 @@ index 63acee6a4310..49994c2390b7 100644
static int rockchip_usb2phy_set_mode(struct phy *phy, enum phy_mode mode,
int submode)
{
@@ -707,6 +710,14 @@ static int rockchip_usb2phy_set_mode(struct phy *phy, enum phy_mode mode,
@@ -720,6 +723,14 @@ static int rockchip_usb2phy_set_mode(struct phy *phy, enum phy_mode mode,
dev_err(&rport->phy->dev, "U2PHY set_mode: host=%d\n", host_mode);
rport->host_mode = host_mode;
@@ -66,7 +65,7 @@ index 63acee6a4310..49994c2390b7 100644
/* let the state machine act on the new role */
mod_delayed_work(system_wq, &rport->otg_sm_work, 0);
@@ -832,6 +843,12 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
@@ -845,6 +856,12 @@ static void rockchip_usb2phy_otg_sm_work(struct work_struct *work)
if (!rockchip_usb2phy_host_mode(rphy, rport)) {
dev_dbg(&rport->phy->dev, "usb otg host disconnect\n");
rport->state = OTG_STATE_B_IDLE;
@@ -79,7 +78,7 @@ index 63acee6a4310..49994c2390b7 100644
rockchip_usb2phy_power_off(rport->phy);
}
break;
@@ -946,6 +963,29 @@ static void rockchip_chg_leave_mode(struct rockchip_usb2phy *rphy,
@@ -953,6 +970,29 @@ static void rockchip_chg_leave_mode(struct rockchip_usb2phy *rphy,
rphy->chg_mode_cfg | (mask << BIT_WRITEABLE_SHIFT));
}
@@ -1,7 +1,7 @@
From 7ac552f6eeb21d5d1782a07530f0a87d7d7b4022 Mon Sep 17 00:00:00 2001
From 4b4a12e0628238d945c214f8d324801d710aa704 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 07:43:34 +0200
Subject: [PATCH 56/84] usb: dwc3: Set the PHY mode before starting the host
Subject: [PATCH 82/90] usb: dwc3: Set the PHY mode before starting the host
The device case tells the PHYs the role before dwc3_gadget_init(), but
the host case tells them only after dwc3_host_init() has returned.
@@ -26,13 +26,12 @@ Move the mode setting ahead of dwc3_host_init(), which also makes the
two cases consistent.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 82f8bbb2eadcff8cf5840c016745165130b1761f)
---
drivers/usb/dwc3/core.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 2c1cada5d637..fa961b84d2b5 100644
index 7e86dce3d317..3ff55af69018 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -314,18 +314,24 @@ static void __dwc3_set_mode(struct work_struct *work)
@@ -1,7 +1,7 @@
From df015e8b9599ef975a1a90429f64bf1990dba73d Mon Sep 17 00:00:00 2001
From 5252286b5961c10c749dfa16d48d71cfe8d6aa2a Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 07:43:49 +0200
Subject: [PATCH 57/84] usb: dwc3: Do not connect the gadget while no cable is
Subject: [PATCH 83/90] usb: dwc3: Do not connect the gadget while no cable is
present
usb_add_gadget() starts out assuming VBUS is present and binds any
@@ -25,13 +25,12 @@ state, which __dwc3_set_mode() already reports through
usb_udc_vbus_handler().
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 2ef635fb2667eb4e12fe0260152c261a25c414d6)
---
drivers/usb/dwc3/gadget.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 519a1dd23a30..4fbcad5bb2b2 100644
index 45b468b4c9b5..88792b22efc1 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2797,6 +2797,20 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
@@ -1,7 +1,7 @@
From bc44b71cbbaec180d07ac4961c99e7b82e5f086a Mon Sep 17 00:00:00 2001
From 1f1ae5cc394194aa46053c3fdad3845592e13676 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 07:52:19 +0200
Subject: [PATCH 58/84] phy: rockchip-inno-usb2: Power the PHY up before the
Subject: [PATCH 84/90] phy: rockchip-inno-usb2: Power the PHY up before the
host starts
Switching to host mode only queued the OTG state machine, so the PHY was
@@ -25,16 +25,15 @@ through the state machine, which has to work out what the port is facing
before it can do anything anyway.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
(cherry picked from commit 04db52e4ec332802c34c202252c37f9e37d414c1)
---
drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
index 49994c2390b7..22ef0e8dd117 100644
index 96d0042027a4..ffbe80342189 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c
@@ -718,7 +718,20 @@ static int rockchip_usb2phy_set_mode(struct phy *phy, enum phy_mode mode,
@@ -731,7 +731,20 @@ static int rockchip_usb2phy_set_mode(struct phy *phy, enum phy_mode mode,
*/
rockchip_chg_detect_cancel(rphy, rport);
@@ -1,7 +1,7 @@
From 2575cfc3439b3a876b35644780657e87cb5739cd Mon Sep 17 00:00:00 2001
From c8861d8968cc9da016f5c55385956a2757068e0b Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Tue, 21 Jul 2026 10:22:14 +0200
Subject: [PATCH 59/84] usb: dwc3: Require MPS-aligned OUT buffers
Subject: [PATCH 85/90] usb: dwc3: Require MPS-aligned OUT buffers
An OUT request whose length is not a multiple of the maximum packet size
gets an extra TRB pointing at a shared bounce buffer, so that a final
@@ -12,17 +12,16 @@ byte stream.
Set quirk_ep_out_aligned_size so the framework rounds OUT buffers up to
the maximum packet size and the overflow cannot happen.
(cherry picked from commit 7b6bedf1b7096d2ce9dd3d9d0006508e1852e816)
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/usb/dwc3/gadget.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 4fbcad5bb2b2..c5f5efda2185 100644
index 88792b22efc1..d92f91eac235 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -4782,6 +4782,16 @@ int dwc3_gadget_init(struct dwc3 *dwc)
@@ -4815,6 +4815,16 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->revision);
dwc->gadget->max_speed = dwc->maximum_speed;
@@ -1,7 +1,7 @@
From c0b9ffa7d04334b0ba1a136f4cda14ac725eb929 Mon Sep 17 00:00:00 2001
From 57d46058ad83cc0f7dd5a2930c7b3f6052ff1cd0 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Wed, 22 Jul 2026 14:03:03 +0200
Subject: [PATCH 60/84] usb: typec: displayport: Update the mux before
Subject: [PATCH 86/90] usb: typec: displayport: Update the mux before
signalling hotplug
On HPD changes the DP alt mode driver signalled the DRM side first and
@@ -1,12 +1,13 @@
From c526256757f45b4afd820f4703e85156a5f4d37e Mon Sep 17 00:00:00 2001
From afae5311c52393eaaf9d5e048bcf4ac66eef251f Mon Sep 17 00:00:00 2001
From: Martijn Braam <martijn@brixit.nl>
Date: Sat, 29 Jan 2022 23:06:29 +0100
Subject: [PATCH 17/84] mtd: spi-nor: gigadevice: Add support for gd25lq128e
Subject: [PATCH 87/90] mtd: spi-nor: gigadevice: Add support for gd25lq128e
The GD25LQ128EWIGR reports an JEDEC id with a different vendor,
otherwise it seems to fit neatly in the gigadevice list.
Signed-off-by: Martijn Braam <martijn@brixit.nl>
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/mtd/spi-nor/gigadevice.c | 6 ++++++
1 file changed, 6 insertions(+)
@@ -1,7 +1,7 @@
From 9383b1fc0830fc3a27d82fe538fb1e594525e9c2 Mon Sep 17 00:00:00 2001
From db5d0ba63a6a7b2580936179f583818aa51b310a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Fri, 22 Oct 2021 18:09:09 +0200
Subject: [PATCH 18/84] clk: rk3399: Export SCLK_CIF_OUT_SRC to device tree
Subject: [PATCH 88/90] clk: rk3399: Export SCLK_CIF_OUT_SRC to device tree
So that it can be used in assigned-clock-parents.
@@ -1,7 +1,7 @@
From 6f8589b9204a397d5deaa8edd475322b9ec72759 Mon Sep 17 00:00:00 2001
From 729242c9e6ba6d4c3b8734c2435ee9fc921d39ab Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 24 Oct 2022 03:17:57 +0200
Subject: [PATCH 19/84] clk: rockchip: rk3399: Don't allow to reparent
Subject: [PATCH 89/90] clk: rockchip: rk3399: Don't allow to reparent
dclk_vop0 to frac clock
frac clock requires 20x difference between intput and output, and kernel