Bring-up of the Moto Edge 40 Pro (rtwo) on the SM8550 kernel: - dts: NT37705 DSI panel with DSC, Goodix GT9916P touch, ADSP/CDSP with pmic-glink (battery, UCSI), Adreno 740, WiFi (WCN7850/ath12k), physical keys, and USB-C DisplayPort (pmic-glink altmode -> PS5169 redriver -> FSA4480 -> QMP combo PHY -> mdss_dp0) following the sm8550-qrd layout. - DP link capped at HBR (link-frequencies on &mdss_dp0_out): the DP->HDMI converter of a common USB-C hub trains fine at HBR2 but its HDMI output flickers and drops HPD; HBR x2 still covers 1080p60. - new drivers: typec-mux-ps5169.c (Parade PS5169 redriver as typec switch/retimer), panel-novatek-nt37705.c. - patches: msm DP invalid LTTPR caps + no push_idle with the link down (hardware reset on unplug), msm DSI keeps the panel DSC config, ath12k regd fixes and MHI keep-awake, ICC keepalive for the MDP fetch path. - rtwo.config / config-motorola-rtwo.aarch64: options for all of the above. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DnHwDU5yL8L6qgPEN5CV5m
27 lines
1017 B
Diff
27 lines
1017 B
Diff
--- a/drivers/net/wireless/ath/ath12k/wmi.c 2026-09-20 02:48:13.191255011 -0300
|
|
+++ b/drivers/net/wireless/ath/ath12k/wmi.c 2026-09-20 02:48:13.192653745 -0300
|
|
@@ -6939,6 +6939,15 @@
|
|
goto mem_free;
|
|
}
|
|
|
|
+ /* Assign pdev_idx as soon as we have a valid reg_info, BEFORE the
|
|
+ * FALLBACK/DROP paths below, so ar->regd_update_completed still gets
|
|
+ * signalled even when the event is dropped because the country code
|
|
+ * already matches the default regd (fixes a permanent hang of any
|
|
+ * caller waiting on regd_update_completed, e.g. WMI_PDEV_SET_PARAM
|
|
+ * during mac80211 hw_register on bring-up).
|
|
+ */
|
|
+ pdev_idx = reg_info->phy_id;
|
|
+
|
|
ret = ath12k_reg_validate_reg_info(ab, reg_info);
|
|
if (ret == ATH12K_REG_STATUS_FALLBACK) {
|
|
ath12k_warn(ab, "failed to validate reg info %d\n", ret);
|
|
@@ -6955,7 +6964,6 @@
|
|
}
|
|
|
|
/* free old reg_info if it exist */
|
|
- pdev_idx = reg_info->phy_id;
|
|
if (ab->reg_info[pdev_idx]) {
|
|
ath12k_reg_reset_reg_info(ab->reg_info[pdev_idx]);
|
|
kfree(ab->reg_info[pdev_idx]);
|