@@ -292,12 +292,10 @@ void bxt_dpio_phy_set_signal_levels(struct intel_encoder *encoder,
292
292
const struct intel_crtc_state * crtc_state )
293
293
{
294
294
struct drm_i915_private * dev_priv = to_i915 (encoder -> base .dev );
295
- int level = intel_ddi_level (encoder , crtc_state , 0 );
296
295
const struct intel_ddi_buf_trans * trans ;
297
296
enum dpio_channel ch ;
298
297
enum dpio_phy phy ;
299
- int n_entries ;
300
- u32 val ;
298
+ int lane , n_entries ;
301
299
302
300
trans = encoder -> get_buf_trans (encoder , crtc_state , & n_entries );
303
301
if (drm_WARN_ON_ONCE (& dev_priv -> drm , !trans ))
@@ -313,26 +311,37 @@ void bxt_dpio_phy_set_signal_levels(struct intel_encoder *encoder,
313
311
BXT_PORT_PCS_DW10_GRP (phy , ch ),
314
312
TX2_SWING_CALC_INIT | TX1_SWING_CALC_INIT , 0 );
315
313
316
- bxt_dpio_phy_rmw_grp (dev_priv , BXT_PORT_TX_DW2_LN (phy , ch , 0 ),
317
- BXT_PORT_TX_DW2_GRP (phy , ch ),
314
+ for (lane = 0 ; lane < crtc_state -> lane_count ; lane ++ ) {
315
+ int level = intel_ddi_level (encoder , crtc_state , lane );
316
+
317
+ intel_de_rmw (dev_priv , BXT_PORT_TX_DW2_LN (phy , ch , lane ),
318
318
MARGIN_000_MASK | UNIQ_TRANS_SCALE_MASK ,
319
319
MARGIN_000 (trans -> entries [level ].bxt .margin ) |
320
320
UNIQ_TRANS_SCALE (trans -> entries [level ].bxt .scale ));
321
+ }
322
+
323
+ for (lane = 0 ; lane < crtc_state -> lane_count ; lane ++ ) {
324
+ int level = intel_ddi_level (encoder , crtc_state , lane );
325
+ u32 val ;
321
326
322
- bxt_dpio_phy_rmw_grp (dev_priv , BXT_PORT_TX_DW3_LN (phy , ch , 0 ),
323
- BXT_PORT_TX_DW3_GRP (phy , ch ),
327
+ intel_de_rmw (dev_priv , BXT_PORT_TX_DW3_LN (phy , ch , lane ),
324
328
SCALE_DCOMP_METHOD ,
325
329
trans -> entries [level ].bxt .enable ?
326
330
SCALE_DCOMP_METHOD : 0 );
327
331
328
- val = intel_de_read (dev_priv , BXT_PORT_TX_DW3_LN (phy , ch , 0 ));
329
- if ((val & UNIQUE_TRANGE_EN_METHOD ) && !(val & SCALE_DCOMP_METHOD ))
330
- drm_err (& dev_priv -> drm ,
331
- "Disabled scaling while ouniqetrangenmethod was set" );
332
+ val = intel_de_read (dev_priv , BXT_PORT_TX_DW3_LN (phy , ch , lane ));
333
+ if ((val & UNIQUE_TRANGE_EN_METHOD ) && !(val & SCALE_DCOMP_METHOD ))
334
+ drm_err (& dev_priv -> drm ,
335
+ "Disabled scaling while ouniqetrangenmethod was set" );
336
+ }
337
+
338
+ for (lane = 0 ; lane < crtc_state -> lane_count ; lane ++ ) {
339
+ int level = intel_ddi_level (encoder , crtc_state , lane );
332
340
333
- bxt_dpio_phy_rmw_grp (dev_priv , BXT_PORT_TX_DW4_LN (phy , ch , 0 ),
334
- BXT_PORT_TX_DW4_GRP ( phy , ch ), DE_EMPHASIS_MASK ,
341
+ intel_de_rmw (dev_priv , BXT_PORT_TX_DW4_LN (phy , ch , lane ),
342
+ DE_EMPHASIS_MASK ,
335
343
DE_EMPHASIS (trans -> entries [level ].bxt .deemphasis ));
344
+ }
336
345
337
346
bxt_dpio_phy_rmw_grp (dev_priv , BXT_PORT_PCS_DW10_LN01 (phy , ch ),
338
347
BXT_PORT_PCS_DW10_GRP (phy , ch ),
0 commit comments