diff options
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 8 |
4 files changed, 17 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index e27e7804c0b9..f0be855ddf45 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -11673,6 +11673,9 @@ static struct intel_quirk intel_quirks[] = { | |||
11673 | 11673 | ||
11674 | /* Toshiba CB35 Chromebook (Celeron 2955U) */ | 11674 | /* Toshiba CB35 Chromebook (Celeron 2955U) */ |
11675 | { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present }, | 11675 | { 0x0a06, 0x1179, 0x0a88, quirk_backlight_present }, |
11676 | |||
11677 | /* HP Chromebook 14 (Celeron 2955U) */ | ||
11678 | { 0x0a06, 0x103c, 0x21ed, quirk_backlight_present }, | ||
11676 | }; | 11679 | }; |
11677 | 11680 | ||
11678 | static void intel_init_quirks(struct drm_device *dev) | 11681 | static void intel_init_quirks(struct drm_device *dev) |
@@ -11911,6 +11914,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc) | |||
11911 | * ... */ | 11914 | * ... */ |
11912 | plane = crtc->plane; | 11915 | plane = crtc->plane; |
11913 | crtc->plane = !plane; | 11916 | crtc->plane = !plane; |
11917 | crtc->primary_enabled = true; | ||
11914 | dev_priv->display.crtc_disable(&crtc->base); | 11918 | dev_priv->display.crtc_disable(&crtc->base); |
11915 | crtc->plane = plane; | 11919 | crtc->plane = plane; |
11916 | 11920 | ||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 075170d1844f..8a1a4fbc06ac 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -906,8 +906,8 @@ intel_dp_compute_config(struct intel_encoder *encoder, | |||
906 | mode_rate = intel_dp_link_required(adjusted_mode->crtc_clock, | 906 | mode_rate = intel_dp_link_required(adjusted_mode->crtc_clock, |
907 | bpp); | 907 | bpp); |
908 | 908 | ||
909 | for (lane_count = min_lane_count; lane_count <= max_lane_count; lane_count <<= 1) { | 909 | for (clock = min_clock; clock <= max_clock; clock++) { |
910 | for (clock = min_clock; clock <= max_clock; clock++) { | 910 | for (lane_count = min_lane_count; lane_count <= max_lane_count; lane_count <<= 1) { |
911 | link_clock = drm_dp_bw_code_to_link_rate(bws[clock]); | 911 | link_clock = drm_dp_bw_code_to_link_rate(bws[clock]); |
912 | link_avail = intel_dp_max_data_rate(link_clock, | 912 | link_avail = intel_dp_max_data_rate(link_clock, |
913 | lane_count); | 913 | lane_count); |
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c index 23126023aeba..5e5a72fca5fb 100644 --- a/drivers/gpu/drm/i915/intel_lvds.c +++ b/drivers/gpu/drm/i915/intel_lvds.c | |||
@@ -111,6 +111,13 @@ static void intel_lvds_get_config(struct intel_encoder *encoder, | |||
111 | 111 | ||
112 | pipe_config->adjusted_mode.flags |= flags; | 112 | pipe_config->adjusted_mode.flags |= flags; |
113 | 113 | ||
114 | /* gen2/3 store dither state in pfit control, needs to match */ | ||
115 | if (INTEL_INFO(dev)->gen < 4) { | ||
116 | tmp = I915_READ(PFIT_CONTROL); | ||
117 | |||
118 | pipe_config->gmch_pfit.control |= tmp & PANEL_8TO6_DITHER_ENABLE; | ||
119 | } | ||
120 | |||
114 | dotclock = pipe_config->port_clock; | 121 | dotclock = pipe_config->port_clock; |
115 | 122 | ||
116 | if (HAS_PCH_SPLIT(dev_priv->dev)) | 123 | if (HAS_PCH_SPLIT(dev_priv->dev)) |
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c index 628cd8938274..12b02fe1d0ae 100644 --- a/drivers/gpu/drm/i915/intel_panel.c +++ b/drivers/gpu/drm/i915/intel_panel.c | |||
@@ -361,16 +361,16 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc, | |||
361 | pfit_control |= ((intel_crtc->pipe << PFIT_PIPE_SHIFT) | | 361 | pfit_control |= ((intel_crtc->pipe << PFIT_PIPE_SHIFT) | |
362 | PFIT_FILTER_FUZZY); | 362 | PFIT_FILTER_FUZZY); |
363 | 363 | ||
364 | /* Make sure pre-965 set dither correctly for 18bpp panels. */ | ||
365 | if (INTEL_INFO(dev)->gen < 4 && pipe_config->pipe_bpp == 18) | ||
366 | pfit_control |= PANEL_8TO6_DITHER_ENABLE; | ||
367 | |||
368 | out: | 364 | out: |
369 | if ((pfit_control & PFIT_ENABLE) == 0) { | 365 | if ((pfit_control & PFIT_ENABLE) == 0) { |
370 | pfit_control = 0; | 366 | pfit_control = 0; |
371 | pfit_pgm_ratios = 0; | 367 | pfit_pgm_ratios = 0; |
372 | } | 368 | } |
373 | 369 | ||
370 | /* Make sure pre-965 set dither correctly for 18bpp panels. */ | ||
371 | if (INTEL_INFO(dev)->gen < 4 && pipe_config->pipe_bpp == 18) | ||
372 | pfit_control |= PANEL_8TO6_DITHER_ENABLE; | ||
373 | |||
374 | pipe_config->gmch_pfit.control = pfit_control; | 374 | pipe_config->gmch_pfit.control = pfit_control; |
375 | pipe_config->gmch_pfit.pgm_ratios = pfit_pgm_ratios; | 375 | pipe_config->gmch_pfit.pgm_ratios = pfit_pgm_ratios; |
376 | pipe_config->gmch_pfit.lvds_border_bits = border; | 376 | pipe_config->gmch_pfit.lvds_border_bits = border; |