Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/i915/dsi: use vlv and bxt prefixes for the global DSI functions

Avoid confusion with the functions to be added for the new ICL or gen 11
DSI implementation by renaming the current DSI functions. While at it,
permutate the words in the function names to make them all start with
"vlv_dsi" or "vlv_dsi_pll" etc.

Reduce the platform abstractions in the PLL file while at it, moving the
checks to vlv_dsi.c instead, where we typically already have the
necessary if ladders.

Leave the static functions as-is for now; they could be renamed later if
needed.

No functional changes.

v2: use "gen7" prefix.

v3: use "vlv" and "bxt" prefixes, reduce the abstractions.

References: https://patchwork.freedesktop.org/series/44823/
Cc: Madhav Chauhan <madhav.chauhan@intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Madhav Chauhan <madhav.chauhan@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180705132509.12881-2-jani.nikula@intel.com

+80 -119
+3 -3
drivers/gpu/drm/i915/intel_display.c
··· 9416 9416 * registers/MIPI[BXT]. We can break out here early, since we 9417 9417 * need the same DSI PLL to be enabled for both DSI ports. 9418 9418 */ 9419 - if (!intel_dsi_pll_is_enabled(dev_priv)) 9419 + if (!bxt_dsi_pll_is_enabled(dev_priv)) 9420 9420 break; 9421 9421 9422 9422 /* XXX: this works for video mode only */ ··· 14092 14092 intel_ddi_init(dev_priv, PORT_B); 14093 14093 intel_ddi_init(dev_priv, PORT_C); 14094 14094 14095 - intel_dsi_init(dev_priv); 14095 + vlv_dsi_init(dev_priv); 14096 14096 } else if (HAS_DDI(dev_priv)) { 14097 14097 int found; 14098 14098 ··· 14198 14198 intel_hdmi_init(dev_priv, CHV_HDMID, PORT_D); 14199 14199 } 14200 14200 14201 - intel_dsi_init(dev_priv); 14201 + vlv_dsi_init(dev_priv); 14202 14202 } else if (!IS_GEN2(dev_priv) && !IS_PINEVIEW(dev_priv)) { 14203 14203 bool found = false; 14204 14204
+1 -1
drivers/gpu/drm/i915/intel_drv.h
··· 1731 1731 int intel_dp_mst_encoder_init(struct intel_digital_port *intel_dig_port, int conn_id); 1732 1732 void intel_dp_mst_encoder_cleanup(struct intel_digital_port *intel_dig_port); 1733 1733 /* vlv_dsi.c */ 1734 - void intel_dsi_init(struct drm_i915_private *dev_priv); 1734 + void vlv_dsi_init(struct drm_i915_private *dev_priv); 1735 1735 1736 1736 /* intel_dsi_dcs_backlight.c */ 1737 1737 int intel_dsi_dcs_init_backlight_funcs(struct intel_connector *intel_connector);
+19 -11
drivers/gpu/drm/i915/intel_dsi.h
··· 130 130 } 131 131 132 132 /* vlv_dsi.c */ 133 - void wait_for_dsi_fifo_empty(struct intel_dsi *intel_dsi, enum port port); 133 + void vlv_dsi_wait_for_fifo_empty(struct intel_dsi *intel_dsi, enum port port); 134 134 enum mipi_dsi_pixel_format pixel_format_from_register_bits(u32 fmt); 135 135 136 136 /* vlv_dsi_pll.c */ 137 - bool intel_dsi_pll_is_enabled(struct drm_i915_private *dev_priv); 138 - int intel_compute_dsi_pll(struct intel_encoder *encoder, 139 - struct intel_crtc_state *config); 140 - void intel_enable_dsi_pll(struct intel_encoder *encoder, 141 - const struct intel_crtc_state *config); 142 - void intel_disable_dsi_pll(struct intel_encoder *encoder); 143 - u32 intel_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 144 - struct intel_crtc_state *config); 145 - void intel_dsi_reset_clocks(struct intel_encoder *encoder, 146 - enum port port); 137 + int vlv_dsi_pll_compute(struct intel_encoder *encoder, 138 + struct intel_crtc_state *config); 139 + void vlv_dsi_pll_enable(struct intel_encoder *encoder, 140 + const struct intel_crtc_state *config); 141 + void vlv_dsi_pll_disable(struct intel_encoder *encoder); 142 + u32 vlv_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 143 + struct intel_crtc_state *config); 144 + void vlv_dsi_reset_clocks(struct intel_encoder *encoder, enum port port); 145 + 146 + bool bxt_dsi_pll_is_enabled(struct drm_i915_private *dev_priv); 147 + int bxt_dsi_pll_compute(struct intel_encoder *encoder, 148 + struct intel_crtc_state *config); 149 + void bxt_dsi_pll_enable(struct intel_encoder *encoder, 150 + const struct intel_crtc_state *config); 151 + void bxt_dsi_pll_disable(struct intel_encoder *encoder); 152 + u32 bxt_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 153 + struct intel_crtc_state *config); 154 + void bxt_dsi_reset_clocks(struct intel_encoder *encoder, enum port port); 147 155 148 156 /* intel_dsi_vbt.c */ 149 157 bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id);
+1 -1
drivers/gpu/drm/i915/intel_dsi_vbt.c
··· 181 181 break; 182 182 } 183 183 184 - wait_for_dsi_fifo_empty(intel_dsi, port); 184 + vlv_dsi_wait_for_fifo_empty(intel_dsi, port); 185 185 186 186 out: 187 187 data += len;
+39 -22
drivers/gpu/drm/i915/vlv_dsi.c
··· 69 69 } 70 70 } 71 71 72 - void wait_for_dsi_fifo_empty(struct intel_dsi *intel_dsi, enum port port) 72 + void vlv_dsi_wait_for_fifo_empty(struct intel_dsi *intel_dsi, enum port port) 73 73 { 74 74 struct drm_encoder *encoder = &intel_dsi->base.base; 75 75 struct drm_device *dev = encoder->dev; ··· 342 342 pipe_config->cpu_transcoder = TRANSCODER_DSI_C; 343 343 else 344 344 pipe_config->cpu_transcoder = TRANSCODER_DSI_A; 345 - } 346 345 347 - ret = intel_compute_dsi_pll(encoder, pipe_config); 348 - if (ret) 349 - return false; 346 + ret = bxt_dsi_pll_compute(encoder, pipe_config); 347 + if (ret) 348 + return false; 349 + } else { 350 + ret = vlv_dsi_pll_compute(encoder, pipe_config); 351 + if (ret) 352 + return false; 353 + } 350 354 351 355 pipe_config->clock_set = true; 352 356 ··· 814 810 * The BIOS may leave the PLL in a wonky state where it doesn't 815 811 * lock. It needs to be fully powered down to fix it. 816 812 */ 817 - intel_disable_dsi_pll(encoder); 818 - intel_enable_dsi_pll(encoder, pipe_config); 813 + if (IS_GEN9_LP(dev_priv)) { 814 + bxt_dsi_pll_disable(encoder); 815 + bxt_dsi_pll_enable(encoder, pipe_config); 816 + } else { 817 + vlv_dsi_pll_disable(encoder); 818 + vlv_dsi_pll_enable(encoder, pipe_config); 819 + } 819 820 820 821 if (IS_BROXTON(dev_priv)) { 821 822 /* Add MIPI IO reset programming for modeset */ ··· 958 949 959 950 if (is_vid_mode(intel_dsi)) { 960 951 for_each_dsi_port(port, intel_dsi->ports) 961 - wait_for_dsi_fifo_empty(intel_dsi, port); 952 + vlv_dsi_wait_for_fifo_empty(intel_dsi, port); 962 953 963 954 intel_dsi_port_disable(encoder); 964 955 usleep_range(2000, 5000); ··· 988 979 val & ~MIPIO_RST_CTRL); 989 980 } 990 981 991 - intel_disable_dsi_pll(encoder); 992 - 993 - if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) { 982 + if (IS_GEN9_LP(dev_priv)) { 983 + bxt_dsi_pll_disable(encoder); 984 + } else { 994 985 u32 val; 986 + 987 + vlv_dsi_pll_disable(encoder); 995 988 996 989 val = I915_READ(DSPCLK_GATE_D); 997 990 val &= ~DPOUNIT_CLOCK_GATE_DISABLE; ··· 1035 1024 * configuration, otherwise accessing DSI registers will hang the 1036 1025 * machine. See BSpec North Display Engine registers/MIPI[BXT]. 1037 1026 */ 1038 - if (IS_GEN9_LP(dev_priv) && !intel_dsi_pll_is_enabled(dev_priv)) 1027 + if (IS_GEN9_LP(dev_priv) && !bxt_dsi_pll_is_enabled(dev_priv)) 1039 1028 goto out_put_power; 1040 1029 1041 1030 /* XXX: this only works for one DSI output */ ··· 1258 1247 1259 1248 pipe_config->output_types |= BIT(INTEL_OUTPUT_DSI); 1260 1249 1261 - if (IS_GEN9_LP(dev_priv)) 1250 + if (IS_GEN9_LP(dev_priv)) { 1262 1251 bxt_dsi_get_pipe_config(encoder, pipe_config); 1252 + pclk = bxt_dsi_get_pclk(encoder, pipe_config->pipe_bpp, 1253 + pipe_config); 1254 + } else { 1255 + pclk = vlv_dsi_get_pclk(encoder, pipe_config->pipe_bpp, 1256 + pipe_config); 1257 + } 1263 1258 1264 - pclk = intel_dsi_get_pclk(encoder, pipe_config->pipe_bpp, 1265 - pipe_config); 1266 - if (!pclk) 1267 - return; 1268 - 1269 - pipe_config->base.adjusted_mode.crtc_clock = pclk; 1270 - pipe_config->port_clock = pclk; 1259 + if (pclk) { 1260 + pipe_config->base.adjusted_mode.crtc_clock = pclk; 1261 + pipe_config->port_clock = pclk; 1262 + } 1271 1263 } 1272 1264 1273 1265 static enum drm_mode_status ··· 1604 1590 /* Panel commands can be sent when clock is in LP11 */ 1605 1591 I915_WRITE(MIPI_DEVICE_READY(port), 0x0); 1606 1592 1607 - intel_dsi_reset_clocks(encoder, port); 1593 + if (IS_GEN9_LP(dev_priv)) 1594 + bxt_dsi_reset_clocks(encoder, port); 1595 + else 1596 + vlv_dsi_reset_clocks(encoder, port); 1608 1597 I915_WRITE(MIPI_EOT_DISABLE(port), CLOCKSTOP); 1609 1598 1610 1599 val = I915_READ(MIPI_DSI_FUNC_PRG(port)); ··· 1730 1713 } 1731 1714 } 1732 1715 1733 - void intel_dsi_init(struct drm_i915_private *dev_priv) 1716 + void vlv_dsi_init(struct drm_i915_private *dev_priv) 1734 1717 { 1735 1718 struct drm_device *dev = &dev_priv->drm; 1736 1719 struct intel_dsi *intel_dsi;
+17 -81
drivers/gpu/drm/i915/vlv_dsi_pll.c
··· 111 111 * XXX: The muxing and gating is hard coded for now. Need to add support for 112 112 * sharing PLLs with two DSI outputs. 113 113 */ 114 - static int vlv_compute_dsi_pll(struct intel_encoder *encoder, 115 - struct intel_crtc_state *config) 114 + int vlv_dsi_pll_compute(struct intel_encoder *encoder, 115 + struct intel_crtc_state *config) 116 116 { 117 117 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 118 118 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); ··· 142 142 return 0; 143 143 } 144 144 145 - static void vlv_enable_dsi_pll(struct intel_encoder *encoder, 146 - const struct intel_crtc_state *config) 145 + void vlv_dsi_pll_enable(struct intel_encoder *encoder, 146 + const struct intel_crtc_state *config) 147 147 { 148 148 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 149 149 ··· 175 175 DRM_DEBUG_KMS("DSI PLL locked\n"); 176 176 } 177 177 178 - static void vlv_disable_dsi_pll(struct intel_encoder *encoder) 178 + void vlv_dsi_pll_disable(struct intel_encoder *encoder) 179 179 { 180 180 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 181 181 u32 tmp; ··· 192 192 mutex_unlock(&dev_priv->sb_lock); 193 193 } 194 194 195 - static bool bxt_dsi_pll_is_enabled(struct drm_i915_private *dev_priv) 195 + bool bxt_dsi_pll_is_enabled(struct drm_i915_private *dev_priv) 196 196 { 197 197 bool enabled; 198 198 u32 val; ··· 229 229 return enabled; 230 230 } 231 231 232 - static void bxt_disable_dsi_pll(struct intel_encoder *encoder) 232 + void bxt_dsi_pll_disable(struct intel_encoder *encoder) 233 233 { 234 234 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 235 235 u32 val; ··· 261 261 bpp, pipe_bpp); 262 262 } 263 263 264 - static u32 vlv_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 265 - struct intel_crtc_state *config) 264 + u32 vlv_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 265 + struct intel_crtc_state *config) 266 266 { 267 267 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 268 268 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); ··· 327 327 return pclk; 328 328 } 329 329 330 - static u32 bxt_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 331 - struct intel_crtc_state *config) 330 + u32 bxt_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 331 + struct intel_crtc_state *config) 332 332 { 333 333 u32 pclk; 334 334 u32 dsi_clk; ··· 357 357 return pclk; 358 358 } 359 359 360 - u32 intel_dsi_get_pclk(struct intel_encoder *encoder, int pipe_bpp, 361 - struct intel_crtc_state *config) 362 - { 363 - if (IS_GEN9_LP(to_i915(encoder->base.dev))) 364 - return bxt_dsi_get_pclk(encoder, pipe_bpp, config); 365 - else 366 - return vlv_dsi_get_pclk(encoder, pipe_bpp, config); 367 - } 368 - 369 - static void vlv_dsi_reset_clocks(struct intel_encoder *encoder, enum port port) 360 + void vlv_dsi_reset_clocks(struct intel_encoder *encoder, enum port port) 370 361 { 371 362 u32 temp; 372 363 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); ··· 471 480 I915_WRITE(BXT_MIPI_CLOCK_CTL, tmp); 472 481 } 473 482 474 - static int gen9lp_compute_dsi_pll(struct intel_encoder *encoder, 475 - struct intel_crtc_state *config) 483 + int bxt_dsi_pll_compute(struct intel_encoder *encoder, 484 + struct intel_crtc_state *config) 476 485 { 477 486 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 478 487 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); ··· 519 528 return 0; 520 529 } 521 530 522 - static void gen9lp_enable_dsi_pll(struct intel_encoder *encoder, 523 - const struct intel_crtc_state *config) 531 + void bxt_dsi_pll_enable(struct intel_encoder *encoder, 532 + const struct intel_crtc_state *config) 524 533 { 525 534 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 526 535 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); ··· 559 568 DRM_DEBUG_KMS("DSI PLL locked\n"); 560 569 } 561 570 562 - bool intel_dsi_pll_is_enabled(struct drm_i915_private *dev_priv) 563 - { 564 - if (IS_GEN9_LP(dev_priv)) 565 - return bxt_dsi_pll_is_enabled(dev_priv); 566 - 567 - MISSING_CASE(INTEL_DEVID(dev_priv)); 568 - 569 - return false; 570 - } 571 - 572 - int intel_compute_dsi_pll(struct intel_encoder *encoder, 573 - struct intel_crtc_state *config) 574 - { 575 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 576 - 577 - if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) 578 - return vlv_compute_dsi_pll(encoder, config); 579 - else if (IS_GEN9_LP(dev_priv)) 580 - return gen9lp_compute_dsi_pll(encoder, config); 581 - 582 - return -ENODEV; 583 - } 584 - 585 - void intel_enable_dsi_pll(struct intel_encoder *encoder, 586 - const struct intel_crtc_state *config) 587 - { 588 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 589 - 590 - if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) 591 - vlv_enable_dsi_pll(encoder, config); 592 - else if (IS_GEN9_LP(dev_priv)) 593 - gen9lp_enable_dsi_pll(encoder, config); 594 - } 595 - 596 - void intel_disable_dsi_pll(struct intel_encoder *encoder) 597 - { 598 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 599 - 600 - if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) 601 - vlv_disable_dsi_pll(encoder); 602 - else if (IS_GEN9_LP(dev_priv)) 603 - bxt_disable_dsi_pll(encoder); 604 - } 605 - 606 - static void gen9lp_dsi_reset_clocks(struct intel_encoder *encoder, 607 - enum port port) 571 + void bxt_dsi_reset_clocks(struct intel_encoder *encoder, enum port port) 608 572 { 609 573 u32 tmp; 610 574 struct drm_device *dev = encoder->base.dev; ··· 583 637 I915_WRITE(MIPIO_TXESC_CLK_DIV2, tmp); 584 638 } 585 639 I915_WRITE(MIPI_EOT_DISABLE(port), CLOCKSTOP); 586 - } 587 - 588 - void intel_dsi_reset_clocks(struct intel_encoder *encoder, enum port port) 589 - { 590 - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); 591 - 592 - if (IS_GEN9_LP(dev_priv)) 593 - gen9lp_dsi_reset_clocks(encoder, port); 594 - else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) 595 - vlv_dsi_reset_clocks(encoder, port); 596 640 }