|
13 | 13 | #include "intel_dp_aux.h" |
14 | 14 | #include "intel_dp_aux_regs.h" |
15 | 15 | #include "intel_pps.h" |
| 16 | +#include "intel_quirks.h" |
16 | 17 | #include "intel_tc.h" |
17 | 18 |
|
18 | 19 | #define AUX_CH_NAME_BUFSIZE 6 |
@@ -142,16 +143,21 @@ static int intel_dp_aux_sync_len(void) |
142 | 143 | return precharge + preamble; |
143 | 144 | } |
144 | 145 |
|
145 | | -int intel_dp_aux_fw_sync_len(void) |
| 146 | +int intel_dp_aux_fw_sync_len(struct intel_dp *intel_dp) |
146 | 147 | { |
| 148 | + int precharge = 10; /* 10-16 */ |
| 149 | + int preamble = 8; |
| 150 | + |
147 | 151 | /* |
148 | 152 | * We faced some glitches on Dell Precision 5490 MTL laptop with panel: |
149 | 153 | * "Manufacturer: AUO, Model: 63898" when using HW default 18. Using 20 |
150 | 154 | * is fixing these problems with the panel. It is still within range |
151 | | - * mentioned in eDP specification. |
| 155 | + * mentioned in eDP specification. Increasing Fast Wake sync length is |
| 156 | + * causing problems with other panels: increase length as a quirk for |
| 157 | + * this specific laptop. |
152 | 158 | */ |
153 | | - int precharge = 12; /* 10-16 */ |
154 | | - int preamble = 8; |
| 159 | + if (intel_has_dpcd_quirk(intel_dp, QUIRK_FW_SYNC_LEN)) |
| 160 | + precharge += 2; |
155 | 161 |
|
156 | 162 | return precharge + preamble; |
157 | 163 | } |
@@ -211,7 +217,7 @@ static u32 skl_get_aux_send_ctl(struct intel_dp *intel_dp, |
211 | 217 | DP_AUX_CH_CTL_TIME_OUT_MAX | |
212 | 218 | DP_AUX_CH_CTL_RECEIVE_ERROR | |
213 | 219 | DP_AUX_CH_CTL_MESSAGE_SIZE(send_bytes) | |
214 | | - DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(intel_dp_aux_fw_sync_len()) | |
| 220 | + DP_AUX_CH_CTL_FW_SYNC_PULSE_SKL(intel_dp_aux_fw_sync_len(intel_dp)) | |
215 | 221 | DP_AUX_CH_CTL_SYNC_PULSE_SKL(intel_dp_aux_sync_len()); |
216 | 222 |
|
217 | 223 | if (intel_tc_port_in_tbt_alt_mode(dig_port)) |
|
0 commit comments