aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrik Jakobsson <patrik.r.jakobsson@gmail.com>2013-07-10 12:39:58 -0400
committerPatrik Jakobsson <patrik.r.jakobsson@gmail.com>2013-07-23 19:47:24 -0400
commit6443ea1aca56f011432b6ea66ec4cc21a813bb0d (patch)
tree410bc10a787b571af3eec42f61877efc4758d7d2
parent00b1fe7445d8a3cd81ba564fba5d15dcbe26f23b (diff)
drm/gma500: Convert to generic gamma funcs
This takes care of the remaining chips using the old generic code. We don't check if the pipe number is valid but the old code peeked in the register map before checking anyways so just ignore it. Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
-rw-r--r--drivers/gpu/drm/gma500/mdfld_intel_display.c2
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_crtc.c2
-rw-r--r--drivers/gpu/drm/gma500/oaktrail_hdmi.c2
-rw-r--r--drivers/gpu/drm/gma500/psb_drv.c2
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_display.c70
-rw-r--r--drivers/gpu/drm/gma500/psb_intel_drv.h1
6 files changed, 6 insertions, 73 deletions
diff --git a/drivers/gpu/drm/gma500/mdfld_intel_display.c b/drivers/gpu/drm/gma500/mdfld_intel_display.c
index da83fddbc9a8..2862cdb8920a 100644
--- a/drivers/gpu/drm/gma500/mdfld_intel_display.c
+++ b/drivers/gpu/drm/gma500/mdfld_intel_display.c
@@ -436,7 +436,7 @@ static void mdfld_crtc_dpms(struct drm_crtc *crtc, int mode)
436 } 436 }
437 } 437 }
438 438
439 psb_intel_crtc_load_lut(crtc); 439 gma_crtc_load_lut(crtc);
440 440
441 /* Give the overlay scaler a chance to enable 441 /* Give the overlay scaler a chance to enable
442 if it's on this pipe */ 442 if it's on this pipe */
diff --git a/drivers/gpu/drm/gma500/oaktrail_crtc.c b/drivers/gpu/drm/gma500/oaktrail_crtc.c
index 8af461f3a72d..5cd007e82e59 100644
--- a/drivers/gpu/drm/gma500/oaktrail_crtc.c
+++ b/drivers/gpu/drm/gma500/oaktrail_crtc.c
@@ -212,7 +212,7 @@ static void oaktrail_crtc_dpms(struct drm_crtc *crtc, int mode)
212 REG_WRITE(map->base, REG_READ(map->base)); 212 REG_WRITE(map->base, REG_READ(map->base));
213 } 213 }
214 214
215 psb_intel_crtc_load_lut(crtc); 215 gma_crtc_load_lut(crtc);
216 216
217 /* Give the overlay scaler a chance to enable 217 /* Give the overlay scaler a chance to enable
218 if it's on this pipe */ 218 if it's on this pipe */
diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
index d9013f70b019..7d9a5ee52814 100644
--- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c
+++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c
@@ -464,7 +464,7 @@ void oaktrail_crtc_hdmi_dpms(struct drm_crtc *crtc, int mode)
464 REG_READ(DSPBSURF); 464 REG_READ(DSPBSURF);
465 } 465 }
466 466
467 psb_intel_crtc_load_lut(crtc); 467 gma_crtc_load_lut(crtc);
468 } 468 }
469 469
470 /* DSPARB */ 470 /* DSPARB */
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index bddea5807442..b4d13261f762 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -459,7 +459,7 @@ static int psb_gamma_ioctl(struct drm_device *dev, void *data,
459 for (i = 0; i < 256; i++) 459 for (i = 0; i < 256; i++)
460 psb_intel_crtc->lut_adj[i] = lut_arg->lut[i]; 460 psb_intel_crtc->lut_adj[i] = lut_arg->lut[i];
461 461
462 psb_intel_crtc_load_lut(crtc); 462 gma_crtc_load_lut(crtc);
463 463
464 return 0; 464 return 0;
465} 465}
diff --git a/drivers/gpu/drm/gma500/psb_intel_display.c b/drivers/gpu/drm/gma500/psb_intel_display.c
index ca041c6aba4a..940c6f2fb8ee 100644
--- a/drivers/gpu/drm/gma500/psb_intel_display.c
+++ b/drivers/gpu/drm/gma500/psb_intel_display.c
@@ -135,7 +135,7 @@ static void psb_intel_crtc_dpms(struct drm_crtc *crtc, int mode)
135 REG_WRITE(map->base, REG_READ(map->base)); 135 REG_WRITE(map->base, REG_READ(map->base));
136 } 136 }
137 137
138 psb_intel_crtc_load_lut(crtc); 138 gma_crtc_load_lut(crtc);
139 139
140 /* Give the overlay scaler a chance to enable 140 /* Give the overlay scaler a chance to enable
141 * if it's on this pipe */ 141 * if it's on this pipe */
@@ -431,54 +431,6 @@ static int psb_intel_crtc_mode_set(struct drm_crtc *crtc,
431 return 0; 431 return 0;
432} 432}
433 433
434/** Loads the palette/gamma unit for the CRTC with the prepared values */
435void psb_intel_crtc_load_lut(struct drm_crtc *crtc)
436{
437 struct drm_device *dev = crtc->dev;
438 struct drm_psb_private *dev_priv = dev->dev_private;
439 struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
440 const struct psb_offset *map = &dev_priv->regmap[psb_intel_crtc->pipe];
441 int palreg = map->palette;
442 int i;
443
444 /* The clocks have to be on to load the palette. */
445 if (!crtc->enabled)
446 return;
447
448 switch (psb_intel_crtc->pipe) {
449 case 0:
450 case 1:
451 break;
452 default:
453 dev_err(dev->dev, "Illegal Pipe Number.\n");
454 return;
455 }
456
457 if (gma_power_begin(dev, false)) {
458 for (i = 0; i < 256; i++) {
459 REG_WRITE(palreg + 4 * i,
460 ((psb_intel_crtc->lut_r[i] +
461 psb_intel_crtc->lut_adj[i]) << 16) |
462 ((psb_intel_crtc->lut_g[i] +
463 psb_intel_crtc->lut_adj[i]) << 8) |
464 (psb_intel_crtc->lut_b[i] +
465 psb_intel_crtc->lut_adj[i]));
466 }
467 gma_power_end(dev);
468 } else {
469 for (i = 0; i < 256; i++) {
470 dev_priv->regs.pipe[0].palette[i] =
471 ((psb_intel_crtc->lut_r[i] +
472 psb_intel_crtc->lut_adj[i]) << 16) |
473 ((psb_intel_crtc->lut_g[i] +
474 psb_intel_crtc->lut_adj[i]) << 8) |
475 (psb_intel_crtc->lut_b[i] +
476 psb_intel_crtc->lut_adj[i]);
477 }
478
479 }
480}
481
482/** 434/**
483 * Save HW states of giving crtc 435 * Save HW states of giving crtc
484 */ 436 */
@@ -737,24 +689,6 @@ static int psb_intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
737 return 0; 689 return 0;
738} 690}
739 691
740static void psb_intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red,
741 u16 *green, u16 *blue, uint32_t type, uint32_t size)
742{
743 struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
744 int i;
745
746 if (size != 256)
747 return;
748
749 for (i = 0; i < 256; i++) {
750 psb_intel_crtc->lut_r[i] = red[i] >> 8;
751 psb_intel_crtc->lut_g[i] = green[i] >> 8;
752 psb_intel_crtc->lut_b[i] = blue[i] >> 8;
753 }
754
755 psb_intel_crtc_load_lut(crtc);
756}
757
758static int psb_crtc_set_config(struct drm_mode_set *set) 692static int psb_crtc_set_config(struct drm_mode_set *set)
759{ 693{
760 int ret; 694 int ret;
@@ -930,7 +864,7 @@ const struct drm_crtc_funcs psb_intel_crtc_funcs = {
930 .restore = psb_intel_crtc_restore, 864 .restore = psb_intel_crtc_restore,
931 .cursor_set = psb_intel_crtc_cursor_set, 865 .cursor_set = psb_intel_crtc_cursor_set,
932 .cursor_move = psb_intel_crtc_cursor_move, 866 .cursor_move = psb_intel_crtc_cursor_move,
933 .gamma_set = psb_intel_crtc_gamma_set, 867 .gamma_set = gma_crtc_gamma_set,
934 .set_config = psb_crtc_set_config, 868 .set_config = psb_crtc_set_config,
935 .destroy = psb_intel_crtc_destroy, 869 .destroy = psb_intel_crtc_destroy,
936}; 870};
diff --git a/drivers/gpu/drm/gma500/psb_intel_drv.h b/drivers/gpu/drm/gma500/psb_intel_drv.h
index 596850210a51..c8cd9bee7a89 100644
--- a/drivers/gpu/drm/gma500/psb_intel_drv.h
+++ b/drivers/gpu/drm/gma500/psb_intel_drv.h
@@ -226,7 +226,6 @@ extern void oaktrail_dsi_init(struct drm_device *dev,
226extern void mid_dsi_init(struct drm_device *dev, 226extern void mid_dsi_init(struct drm_device *dev,
227 struct psb_intel_mode_device *mode_dev, int dsi_num); 227 struct psb_intel_mode_device *mode_dev, int dsi_num);
228 228
229extern void psb_intel_crtc_load_lut(struct drm_crtc *crtc);
230extern void psb_intel_encoder_prepare(struct drm_encoder *encoder); 229extern void psb_intel_encoder_prepare(struct drm_encoder *encoder);
231extern void psb_intel_encoder_commit(struct drm_encoder *encoder); 230extern void psb_intel_encoder_commit(struct drm_encoder *encoder);
232extern void psb_intel_encoder_destroy(struct drm_encoder *encoder); 231extern void psb_intel_encoder_destroy(struct drm_encoder *encoder);