mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-18 12:16:19 +07:00
drm/gma500/cdv: Convert to generic gamma funcs
There is a slight difference in how we pick the palette register in the generic function but we should be ok as long as psb_intel_crtc->pipe and the register map is sane. Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
This commit is contained in:
parent
7ea03f0695
commit
a1f4efe441
@ -593,58 +593,6 @@ void cdv_intel_update_watermark(struct drm_device *dev, struct drm_crtc *crtc)
|
||||
}
|
||||
}
|
||||
|
||||
/** Loads the palette/gamma unit for the CRTC with the prepared values */
|
||||
static void cdv_intel_crtc_load_lut(struct drm_crtc *crtc)
|
||||
{
|
||||
struct drm_device *dev = crtc->dev;
|
||||
struct drm_psb_private *dev_priv = dev->dev_private;
|
||||
struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
|
||||
int palreg = PALETTE_A;
|
||||
int i;
|
||||
|
||||
/* The clocks have to be on to load the palette. */
|
||||
if (!crtc->enabled)
|
||||
return;
|
||||
|
||||
switch (psb_intel_crtc->pipe) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
palreg = PALETTE_B;
|
||||
break;
|
||||
case 2:
|
||||
palreg = PALETTE_C;
|
||||
break;
|
||||
default:
|
||||
dev_err(dev->dev, "Illegal Pipe Number.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (gma_power_begin(dev, false)) {
|
||||
for (i = 0; i < 256; i++) {
|
||||
REG_WRITE(palreg + 4 * i,
|
||||
((psb_intel_crtc->lut_r[i] +
|
||||
psb_intel_crtc->lut_adj[i]) << 16) |
|
||||
((psb_intel_crtc->lut_g[i] +
|
||||
psb_intel_crtc->lut_adj[i]) << 8) |
|
||||
(psb_intel_crtc->lut_b[i] +
|
||||
psb_intel_crtc->lut_adj[i]));
|
||||
}
|
||||
gma_power_end(dev);
|
||||
} else {
|
||||
for (i = 0; i < 256; i++) {
|
||||
dev_priv->regs.pipe[0].palette[i] =
|
||||
((psb_intel_crtc->lut_r[i] +
|
||||
psb_intel_crtc->lut_adj[i]) << 16) |
|
||||
((psb_intel_crtc->lut_g[i] +
|
||||
psb_intel_crtc->lut_adj[i]) << 8) |
|
||||
(psb_intel_crtc->lut_b[i] +
|
||||
psb_intel_crtc->lut_adj[i]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the pipe currently connected to the panel fitter,
|
||||
* or -1 if the panel fitter is not present or not in use
|
||||
@ -1213,22 +1161,6 @@ static int cdv_intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void cdv_intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red,
|
||||
u16 *green, u16 *blue, uint32_t start, uint32_t size)
|
||||
{
|
||||
struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
|
||||
int i;
|
||||
int end = (start + size > 256) ? 256 : start + size;
|
||||
|
||||
for (i = start; i < end; i++) {
|
||||
psb_intel_crtc->lut_r[i] = red[i] >> 8;
|
||||
psb_intel_crtc->lut_g[i] = green[i] >> 8;
|
||||
psb_intel_crtc->lut_b[i] = blue[i] >> 8;
|
||||
}
|
||||
|
||||
cdv_intel_crtc_load_lut(crtc);
|
||||
}
|
||||
|
||||
static int cdv_crtc_set_config(struct drm_mode_set *set)
|
||||
{
|
||||
int ret = 0;
|
||||
@ -1401,7 +1333,7 @@ const struct drm_crtc_funcs cdv_intel_crtc_funcs = {
|
||||
.restore = cdv_intel_crtc_restore,
|
||||
.cursor_set = cdv_intel_crtc_cursor_set,
|
||||
.cursor_move = cdv_intel_crtc_cursor_move,
|
||||
.gamma_set = cdv_intel_crtc_gamma_set,
|
||||
.gamma_set = gma_crtc_gamma_set,
|
||||
.set_config = cdv_crtc_set_config,
|
||||
.destroy = gma_crtc_destroy,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user