Skip to content

Commit a87fd85

Browse files
committed
resources: add shared dpll patch for linux kernel 6.18
1 parent 29a5b42 commit a87fd85

1 file changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
2+
index 2aed110c5b09..1c4eb9c49ab5 100644
3+
--- a/drivers/gpu/drm/i915/display/intel_display_params.c
4+
+++ b/drivers/gpu/drm/i915/display/intel_display_params.c
5+
@@ -134,6 +134,11 @@ intel_display_param_named_unsafe(enable_psr2_sel_fetch, bool, 0400,
6+
"(0=disabled, 1=enabled) "
7+
"Default: 1");
8+
9+
+intel_display_param_named_unsafe(share_dplls, bool, 0400,
10+
+ "Share dplls between ports with same HW states "
11+
+ "(0=disabled, 1=enabled) "
12+
+ "(Default: 1)");
13+
+
14+
intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
15+
"Enable DMC wakelock "
16+
"(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register, 3=always locked) "
17+
diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
18+
index b01bc5700c52..015b90d5afba 100644
19+
--- a/drivers/gpu/drm/i915/display/intel_display_params.h
20+
+++ b/drivers/gpu/drm/i915/display/intel_display_params.h
21+
@@ -50,6 +50,7 @@ struct drm_printer;
22+
param(bool, psr_safest_params, false, 0400) \
23+
param(bool, enable_psr2_sel_fetch, true, 0400) \
24+
param(int, enable_dmc_wl, -1, 0400) \
25+
+ param(bool, share_dplls, true, 0400) \
26+
27+
#define MEMBER(T, member, ...) T member;
28+
struct intel_display_params {
29+
diff --git a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
30+
index 8ea96cc524a1..d6a8b49f6e21 100644
31+
--- a/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
32+
+++ b/drivers/gpu/drm/i915/display/intel_dpll_mgr.c
33+
@@ -368,11 +368,16 @@ intel_find_dpll(struct intel_atomic_state *state,
34+
struct intel_dpll_state *dpll_state;
35+
struct intel_dpll *unused_pll = NULL;
36+
enum intel_dpll_id id;
37+
+ int total_plls = 0;
38+
39+
dpll_state = intel_atomic_get_dpll_state(&state->base);
40+
41+
drm_WARN_ON(display->drm, dpll_mask & ~dpll_mask_all);
42+
43+
+ for_each_set_bit(id, &dpll_mask, I915_NUM_PLLS) {
44+
+ total_plls++;
45+
+ }
46+
+
47+
for_each_set_bit(id, &dpll_mask, fls(dpll_mask_all)) {
48+
struct intel_dpll *pll;
49+
50+
@@ -387,7 +392,7 @@ intel_find_dpll(struct intel_atomic_state *state,
51+
continue;
52+
}
53+
54+
- if (memcmp(dpll_hw_state,
55+
+ if ((display->params.share_dplls || total_plls == 1) && memcmp(dpll_hw_state,
56+
&dpll_state[pll->index].hw_state,
57+
sizeof(*dpll_hw_state)) == 0) {
58+
drm_dbg_kms(display->drm,

0 commit comments

Comments
 (0)