diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dsi.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dsi.c | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c index b444d0e35a98..de8e9fb51595 100644 --- a/drivers/gpu/drm/i915/intel_dsi.c +++ b/drivers/gpu/drm/i915/intel_dsi.c | |||
@@ -84,13 +84,15 @@ static void wait_for_dsi_fifo_empty(struct intel_dsi *intel_dsi, enum port port) | |||
84 | { | 84 | { |
85 | struct drm_encoder *encoder = &intel_dsi->base.base; | 85 | struct drm_encoder *encoder = &intel_dsi->base.base; |
86 | struct drm_device *dev = encoder->dev; | 86 | struct drm_device *dev = encoder->dev; |
87 | struct drm_i915_private *dev_priv = dev->dev_private; | 87 | struct drm_i915_private *dev_priv = to_i915(dev); |
88 | u32 mask; | 88 | u32 mask; |
89 | 89 | ||
90 | mask = LP_CTRL_FIFO_EMPTY | HS_CTRL_FIFO_EMPTY | | 90 | mask = LP_CTRL_FIFO_EMPTY | HS_CTRL_FIFO_EMPTY | |
91 | LP_DATA_FIFO_EMPTY | HS_DATA_FIFO_EMPTY; | 91 | LP_DATA_FIFO_EMPTY | HS_DATA_FIFO_EMPTY; |
92 | 92 | ||
93 | if (wait_for((I915_READ(MIPI_GEN_FIFO_STAT(port)) & mask) == mask, 100)) | 93 | if (intel_wait_for_register(dev_priv, |
94 | MIPI_GEN_FIFO_STAT(port), mask, mask, | ||
95 | 100)) | ||
94 | DRM_ERROR("DPI FIFOs are not empty\n"); | 96 | DRM_ERROR("DPI FIFOs are not empty\n"); |
95 | } | 97 | } |
96 | 98 | ||
@@ -129,7 +131,7 @@ static ssize_t intel_dsi_host_transfer(struct mipi_dsi_host *host, | |||
129 | { | 131 | { |
130 | struct intel_dsi_host *intel_dsi_host = to_intel_dsi_host(host); | 132 | struct intel_dsi_host *intel_dsi_host = to_intel_dsi_host(host); |
131 | struct drm_device *dev = intel_dsi_host->intel_dsi->base.base.dev; | 133 | struct drm_device *dev = intel_dsi_host->intel_dsi->base.base.dev; |
132 | struct drm_i915_private *dev_priv = dev->dev_private; | 134 | struct drm_i915_private *dev_priv = to_i915(dev); |
133 | enum port port = intel_dsi_host->port; | 135 | enum port port = intel_dsi_host->port; |
134 | struct mipi_dsi_packet packet; | 136 | struct mipi_dsi_packet packet; |
135 | ssize_t ret; | 137 | ssize_t ret; |
@@ -158,8 +160,10 @@ static ssize_t intel_dsi_host_transfer(struct mipi_dsi_host *host, | |||
158 | 160 | ||
159 | /* note: this is never true for reads */ | 161 | /* note: this is never true for reads */ |
160 | if (packet.payload_length) { | 162 | if (packet.payload_length) { |
161 | 163 | if (intel_wait_for_register(dev_priv, | |
162 | if (wait_for((I915_READ(MIPI_GEN_FIFO_STAT(port)) & data_mask) == 0, 50)) | 164 | MIPI_GEN_FIFO_STAT(port), |
165 | data_mask, 0, | ||
166 | 50)) | ||
163 | DRM_ERROR("Timeout waiting for HS/LP DATA FIFO !full\n"); | 167 | DRM_ERROR("Timeout waiting for HS/LP DATA FIFO !full\n"); |
164 | 168 | ||
165 | write_data(dev_priv, data_reg, packet.payload, | 169 | write_data(dev_priv, data_reg, packet.payload, |
@@ -170,7 +174,10 @@ static ssize_t intel_dsi_host_transfer(struct mipi_dsi_host *host, | |||
170 | I915_WRITE(MIPI_INTR_STAT(port), GEN_READ_DATA_AVAIL); | 174 | I915_WRITE(MIPI_INTR_STAT(port), GEN_READ_DATA_AVAIL); |
171 | } | 175 | } |
172 | 176 | ||
173 | if (wait_for((I915_READ(MIPI_GEN_FIFO_STAT(port)) & ctrl_mask) == 0, 50)) { | 177 | if (intel_wait_for_register(dev_priv, |
178 | MIPI_GEN_FIFO_STAT(port), | ||
179 | ctrl_mask, 0, | ||
180 | 50)) { | ||
174 | DRM_ERROR("Timeout waiting for HS/LP CTRL FIFO !full\n"); | 181 | DRM_ERROR("Timeout waiting for HS/LP CTRL FIFO !full\n"); |
175 | } | 182 | } |
176 | 183 | ||
@@ -179,7 +186,10 @@ static ssize_t intel_dsi_host_transfer(struct mipi_dsi_host *host, | |||
179 | /* ->rx_len is set only for reads */ | 186 | /* ->rx_len is set only for reads */ |
180 | if (msg->rx_len) { | 187 | if (msg->rx_len) { |
181 | data_mask = GEN_READ_DATA_AVAIL; | 188 | data_mask = GEN_READ_DATA_AVAIL; |
182 | if (wait_for((I915_READ(MIPI_INTR_STAT(port)) & data_mask) == data_mask, 50)) | 189 | if (intel_wait_for_register(dev_priv, |
190 | MIPI_INTR_STAT(port), | ||
191 | data_mask, data_mask, | ||
192 | 50)) | ||
183 | DRM_ERROR("Timeout waiting for read data.\n"); | 193 | DRM_ERROR("Timeout waiting for read data.\n"); |
184 | 194 | ||
185 | read_data(dev_priv, data_reg, msg->rx_buf, msg->rx_len); | 195 | read_data(dev_priv, data_reg, msg->rx_buf, msg->rx_len); |
@@ -250,7 +260,7 @@ static int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd, bool hs, | |||
250 | { | 260 | { |
251 | struct drm_encoder *encoder = &intel_dsi->base.base; | 261 | struct drm_encoder *encoder = &intel_dsi->base.base; |
252 | struct drm_device *dev = encoder->dev; | 262 | struct drm_device *dev = encoder->dev; |
253 | struct drm_i915_private *dev_priv = dev->dev_private; | 263 | struct drm_i915_private *dev_priv = to_i915(dev); |
254 | u32 mask; | 264 | u32 mask; |
255 | 265 | ||
256 | /* XXX: pipe, hs */ | 266 | /* XXX: pipe, hs */ |
@@ -269,7 +279,9 @@ static int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd, bool hs, | |||
269 | I915_WRITE(MIPI_DPI_CONTROL(port), cmd); | 279 | I915_WRITE(MIPI_DPI_CONTROL(port), cmd); |
270 | 280 | ||
271 | mask = SPL_PKT_SENT_INTERRUPT; | 281 | mask = SPL_PKT_SENT_INTERRUPT; |
272 | if (wait_for((I915_READ(MIPI_INTR_STAT(port)) & mask) == mask, 100)) | 282 | if (intel_wait_for_register(dev_priv, |
283 | MIPI_INTR_STAT(port), mask, mask, | ||
284 | 100)) | ||
273 | DRM_ERROR("Video mode command 0x%08x send failed.\n", cmd); | 285 | DRM_ERROR("Video mode command 0x%08x send failed.\n", cmd); |
274 | 286 | ||
275 | return 0; | 287 | return 0; |
@@ -302,7 +314,7 @@ static inline bool is_cmd_mode(struct intel_dsi *intel_dsi) | |||
302 | static bool intel_dsi_compute_config(struct intel_encoder *encoder, | 314 | static bool intel_dsi_compute_config(struct intel_encoder *encoder, |
303 | struct intel_crtc_state *pipe_config) | 315 | struct intel_crtc_state *pipe_config) |
304 | { | 316 | { |
305 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 317 | struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); |
306 | struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi, | 318 | struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi, |
307 | base); | 319 | base); |
308 | struct intel_connector *intel_connector = intel_dsi->attached_connector; | 320 | struct intel_connector *intel_connector = intel_dsi->attached_connector; |
@@ -313,8 +325,6 @@ static bool intel_dsi_compute_config(struct intel_encoder *encoder, | |||
313 | 325 | ||
314 | DRM_DEBUG_KMS("\n"); | 326 | DRM_DEBUG_KMS("\n"); |
315 | 327 | ||
316 | pipe_config->has_dsi_encoder = true; | ||
317 | |||
318 | if (fixed_mode) { | 328 | if (fixed_mode) { |
319 | intel_fixed_panel_mode(fixed_mode, adjusted_mode); | 329 | intel_fixed_panel_mode(fixed_mode, adjusted_mode); |
320 | 330 | ||
@@ -348,7 +358,7 @@ static bool intel_dsi_compute_config(struct intel_encoder *encoder, | |||
348 | 358 | ||
349 | static void bxt_dsi_device_ready(struct intel_encoder *encoder) | 359 | static void bxt_dsi_device_ready(struct intel_encoder *encoder) |
350 | { | 360 | { |
351 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 361 | struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); |
352 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 362 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
353 | enum port port; | 363 | enum port port; |
354 | u32 val; | 364 | u32 val; |
@@ -387,7 +397,7 @@ static void bxt_dsi_device_ready(struct intel_encoder *encoder) | |||
387 | 397 | ||
388 | static void vlv_dsi_device_ready(struct intel_encoder *encoder) | 398 | static void vlv_dsi_device_ready(struct intel_encoder *encoder) |
389 | { | 399 | { |
390 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 400 | struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); |
391 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 401 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
392 | enum port port; | 402 | enum port port; |
393 | u32 val; | 403 | u32 val; |
@@ -437,7 +447,7 @@ static void intel_dsi_device_ready(struct intel_encoder *encoder) | |||
437 | static void intel_dsi_port_enable(struct intel_encoder *encoder) | 447 | static void intel_dsi_port_enable(struct intel_encoder *encoder) |
438 | { | 448 | { |
439 | struct drm_device *dev = encoder->base.dev; | 449 | struct drm_device *dev = encoder->base.dev; |
440 | struct drm_i915_private *dev_priv = dev->dev_private; | 450 | struct drm_i915_private *dev_priv = to_i915(dev); |
441 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); | 451 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); |
442 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 452 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
443 | enum port port; | 453 | enum port port; |
@@ -478,7 +488,7 @@ static void intel_dsi_port_enable(struct intel_encoder *encoder) | |||
478 | static void intel_dsi_port_disable(struct intel_encoder *encoder) | 488 | static void intel_dsi_port_disable(struct intel_encoder *encoder) |
479 | { | 489 | { |
480 | struct drm_device *dev = encoder->base.dev; | 490 | struct drm_device *dev = encoder->base.dev; |
481 | struct drm_i915_private *dev_priv = dev->dev_private; | 491 | struct drm_i915_private *dev_priv = to_i915(dev); |
482 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 492 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
483 | enum port port; | 493 | enum port port; |
484 | 494 | ||
@@ -497,7 +507,7 @@ static void intel_dsi_port_disable(struct intel_encoder *encoder) | |||
497 | static void intel_dsi_enable(struct intel_encoder *encoder) | 507 | static void intel_dsi_enable(struct intel_encoder *encoder) |
498 | { | 508 | { |
499 | struct drm_device *dev = encoder->base.dev; | 509 | struct drm_device *dev = encoder->base.dev; |
500 | struct drm_i915_private *dev_priv = dev->dev_private; | 510 | struct drm_i915_private *dev_priv = to_i915(dev); |
501 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 511 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
502 | enum port port; | 512 | enum port port; |
503 | 513 | ||
@@ -528,7 +538,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder); | |||
528 | static void intel_dsi_pre_enable(struct intel_encoder *encoder) | 538 | static void intel_dsi_pre_enable(struct intel_encoder *encoder) |
529 | { | 539 | { |
530 | struct drm_device *dev = encoder->base.dev; | 540 | struct drm_device *dev = encoder->base.dev; |
531 | struct drm_i915_private *dev_priv = dev->dev_private; | 541 | struct drm_i915_private *dev_priv = to_i915(dev); |
532 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 542 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
533 | struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); | 543 | struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc); |
534 | enum port port; | 544 | enum port port; |
@@ -602,7 +612,7 @@ static void intel_dsi_pre_disable(struct intel_encoder *encoder) | |||
602 | static void intel_dsi_disable(struct intel_encoder *encoder) | 612 | static void intel_dsi_disable(struct intel_encoder *encoder) |
603 | { | 613 | { |
604 | struct drm_device *dev = encoder->base.dev; | 614 | struct drm_device *dev = encoder->base.dev; |
605 | struct drm_i915_private *dev_priv = dev->dev_private; | 615 | struct drm_i915_private *dev_priv = to_i915(dev); |
606 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 616 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
607 | enum port port; | 617 | enum port port; |
608 | u32 temp; | 618 | u32 temp; |
@@ -641,7 +651,7 @@ static void intel_dsi_disable(struct intel_encoder *encoder) | |||
641 | static void intel_dsi_clear_device_ready(struct intel_encoder *encoder) | 651 | static void intel_dsi_clear_device_ready(struct intel_encoder *encoder) |
642 | { | 652 | { |
643 | struct drm_device *dev = encoder->base.dev; | 653 | struct drm_device *dev = encoder->base.dev; |
644 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 654 | struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); |
645 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 655 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
646 | enum port port; | 656 | enum port port; |
647 | 657 | ||
@@ -667,8 +677,9 @@ static void intel_dsi_clear_device_ready(struct intel_encoder *encoder) | |||
667 | /* Wait till Clock lanes are in LP-00 state for MIPI Port A | 677 | /* Wait till Clock lanes are in LP-00 state for MIPI Port A |
668 | * only. MIPI Port C has no similar bit for checking | 678 | * only. MIPI Port C has no similar bit for checking |
669 | */ | 679 | */ |
670 | if (wait_for(((I915_READ(port_ctrl) & AFE_LATCHOUT) | 680 | if (intel_wait_for_register(dev_priv, |
671 | == 0x00000), 30)) | 681 | port_ctrl, AFE_LATCHOUT, 0, |
682 | 30)) | ||
672 | DRM_ERROR("DSI LP not going Low\n"); | 683 | DRM_ERROR("DSI LP not going Low\n"); |
673 | 684 | ||
674 | /* Disable MIPI PHY transparent latch */ | 685 | /* Disable MIPI PHY transparent latch */ |
@@ -685,7 +696,7 @@ static void intel_dsi_clear_device_ready(struct intel_encoder *encoder) | |||
685 | 696 | ||
686 | static void intel_dsi_post_disable(struct intel_encoder *encoder) | 697 | static void intel_dsi_post_disable(struct intel_encoder *encoder) |
687 | { | 698 | { |
688 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 699 | struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); |
689 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 700 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
690 | 701 | ||
691 | DRM_DEBUG_KMS("\n"); | 702 | DRM_DEBUG_KMS("\n"); |
@@ -720,7 +731,7 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder) | |||
720 | static bool intel_dsi_get_hw_state(struct intel_encoder *encoder, | 731 | static bool intel_dsi_get_hw_state(struct intel_encoder *encoder, |
721 | enum pipe *pipe) | 732 | enum pipe *pipe) |
722 | { | 733 | { |
723 | struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; | 734 | struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); |
724 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); | 735 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); |
725 | struct drm_device *dev = encoder->base.dev; | 736 | struct drm_device *dev = encoder->base.dev; |
726 | enum intel_display_power_domain power_domain; | 737 | enum intel_display_power_domain power_domain; |
@@ -794,7 +805,7 @@ static void bxt_dsi_get_pipe_config(struct intel_encoder *encoder, | |||
794 | struct intel_crtc_state *pipe_config) | 805 | struct intel_crtc_state *pipe_config) |
795 | { | 806 | { |
796 | struct drm_device *dev = encoder->base.dev; | 807 | struct drm_device *dev = encoder->base.dev; |
797 | struct drm_i915_private *dev_priv = dev->dev_private; | 808 | struct drm_i915_private *dev_priv = to_i915(dev); |
798 | struct drm_display_mode *adjusted_mode = | 809 | struct drm_display_mode *adjusted_mode = |
799 | &pipe_config->base.adjusted_mode; | 810 | &pipe_config->base.adjusted_mode; |
800 | struct drm_display_mode *adjusted_mode_sw; | 811 | struct drm_display_mode *adjusted_mode_sw; |
@@ -954,8 +965,6 @@ static void intel_dsi_get_config(struct intel_encoder *encoder, | |||
954 | u32 pclk; | 965 | u32 pclk; |
955 | DRM_DEBUG_KMS("\n"); | 966 | DRM_DEBUG_KMS("\n"); |
956 | 967 | ||
957 | pipe_config->has_dsi_encoder = true; | ||
958 | |||
959 | if (IS_BROXTON(dev)) | 968 | if (IS_BROXTON(dev)) |
960 | bxt_dsi_get_pipe_config(encoder, pipe_config); | 969 | bxt_dsi_get_pipe_config(encoder, pipe_config); |
961 | 970 | ||
@@ -1013,7 +1022,7 @@ static void set_dsi_timings(struct drm_encoder *encoder, | |||
1013 | const struct drm_display_mode *adjusted_mode) | 1022 | const struct drm_display_mode *adjusted_mode) |
1014 | { | 1023 | { |
1015 | struct drm_device *dev = encoder->dev; | 1024 | struct drm_device *dev = encoder->dev; |
1016 | struct drm_i915_private *dev_priv = dev->dev_private; | 1025 | struct drm_i915_private *dev_priv = to_i915(dev); |
1017 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); | 1026 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); |
1018 | enum port port; | 1027 | enum port port; |
1019 | unsigned int bpp = mipi_dsi_pixel_format_to_bpp(intel_dsi->pixel_format); | 1028 | unsigned int bpp = mipi_dsi_pixel_format_to_bpp(intel_dsi->pixel_format); |
@@ -1099,7 +1108,7 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder) | |||
1099 | { | 1108 | { |
1100 | struct drm_encoder *encoder = &intel_encoder->base; | 1109 | struct drm_encoder *encoder = &intel_encoder->base; |
1101 | struct drm_device *dev = encoder->dev; | 1110 | struct drm_device *dev = encoder->dev; |
1102 | struct drm_i915_private *dev_priv = dev->dev_private; | 1111 | struct drm_i915_private *dev_priv = to_i915(dev); |
1103 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); | 1112 | struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); |
1104 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); | 1113 | struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); |
1105 | const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode; | 1114 | const struct drm_display_mode *adjusted_mode = &intel_crtc->config->base.adjusted_mode; |
@@ -1390,6 +1399,7 @@ static const struct drm_connector_helper_funcs intel_dsi_connector_helper_funcs | |||
1390 | static const struct drm_connector_funcs intel_dsi_connector_funcs = { | 1399 | static const struct drm_connector_funcs intel_dsi_connector_funcs = { |
1391 | .dpms = drm_atomic_helper_connector_dpms, | 1400 | .dpms = drm_atomic_helper_connector_dpms, |
1392 | .detect = intel_dsi_detect, | 1401 | .detect = intel_dsi_detect, |
1402 | .late_register = intel_connector_register, | ||
1393 | .early_unregister = intel_connector_unregister, | 1403 | .early_unregister = intel_connector_unregister, |
1394 | .destroy = intel_dsi_connector_destroy, | 1404 | .destroy = intel_dsi_connector_destroy, |
1395 | .fill_modes = drm_helper_probe_single_connector_modes, | 1405 | .fill_modes = drm_helper_probe_single_connector_modes, |
@@ -1420,7 +1430,7 @@ void intel_dsi_init(struct drm_device *dev) | |||
1420 | struct intel_connector *intel_connector; | 1430 | struct intel_connector *intel_connector; |
1421 | struct drm_connector *connector; | 1431 | struct drm_connector *connector; |
1422 | struct drm_display_mode *scan, *fixed_mode = NULL; | 1432 | struct drm_display_mode *scan, *fixed_mode = NULL; |
1423 | struct drm_i915_private *dev_priv = dev->dev_private; | 1433 | struct drm_i915_private *dev_priv = to_i915(dev); |
1424 | enum port port; | 1434 | enum port port; |
1425 | unsigned int i; | 1435 | unsigned int i; |
1426 | 1436 | ||
@@ -1587,13 +1597,10 @@ void intel_dsi_init(struct drm_device *dev) | |||
1587 | connector->display_info.height_mm = fixed_mode->height_mm; | 1597 | connector->display_info.height_mm = fixed_mode->height_mm; |
1588 | 1598 | ||
1589 | intel_panel_init(&intel_connector->panel, fixed_mode, NULL); | 1599 | intel_panel_init(&intel_connector->panel, fixed_mode, NULL); |
1600 | intel_panel_setup_backlight(connector, INVALID_PIPE); | ||
1590 | 1601 | ||
1591 | intel_dsi_add_properties(intel_connector); | 1602 | intel_dsi_add_properties(intel_connector); |
1592 | 1603 | ||
1593 | drm_connector_register(connector); | ||
1594 | |||
1595 | intel_panel_setup_backlight(connector, INVALID_PIPE); | ||
1596 | |||
1597 | return; | 1604 | return; |
1598 | 1605 | ||
1599 | err: | 1606 | err: |