Commit 213a8434 authored by Alan Cox's avatar Alan Cox Committed by Dave Airlie

gma500: use the register map to clean up

Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 8512e074
...@@ -494,6 +494,7 @@ static const struct psb_offset cdv_regmap[2] = { ...@@ -494,6 +494,7 @@ static const struct psb_offset cdv_regmap[2] = {
.conf = PIPEACONF, .conf = PIPEACONF,
.src = PIPEASRC, .src = PIPEASRC,
.dpll = DPLL_A, .dpll = DPLL_A,
.dpll_md = DPLL_A_MD,
.htotal = HTOTAL_A, .htotal = HTOTAL_A,
.hblank = HBLANK_A, .hblank = HBLANK_A,
.hsync = HSYNC_A, .hsync = HSYNC_A,
...@@ -518,6 +519,7 @@ static const struct psb_offset cdv_regmap[2] = { ...@@ -518,6 +519,7 @@ static const struct psb_offset cdv_regmap[2] = {
.conf = PIPEBCONF, .conf = PIPEBCONF,
.src = PIPEBSRC, .src = PIPEBSRC,
.dpll = DPLL_B, .dpll = DPLL_B,
.dpll_md = DPLL_B_MD,
.htotal = HTOTAL_B, .htotal = HTOTAL_B,
.hblank = HBLANK_B, .hblank = HBLANK_B,
.hsync = HSYNC_B, .hsync = HSYNC_B,
......
This diff is collapsed.
This diff is collapsed.
...@@ -605,6 +605,8 @@ int mdfld_dsi_pkg_sender_init(struct mdfld_dsi_connector *dsi_connector, ...@@ -605,6 +605,8 @@ int mdfld_dsi_pkg_sender_init(struct mdfld_dsi_connector *dsi_connector,
struct mdfld_dsi_config *dsi_config = struct mdfld_dsi_config *dsi_config =
mdfld_dsi_get_config(dsi_connector); mdfld_dsi_get_config(dsi_connector);
struct drm_device *dev = dsi_config->dev; struct drm_device *dev = dsi_config->dev;
struct drm_psb_private *dev_priv = dev->dev_private;
const struct psb_offset *map = &dev_priv->regmap[pipe];
u32 mipi_val = 0; u32 mipi_val = 0;
if (!dsi_connector) { if (!dsi_connector) {
...@@ -632,21 +634,13 @@ int mdfld_dsi_pkg_sender_init(struct mdfld_dsi_connector *dsi_connector, ...@@ -632,21 +634,13 @@ int mdfld_dsi_pkg_sender_init(struct mdfld_dsi_connector *dsi_connector,
pkg_sender->status = MDFLD_DSI_PKG_SENDER_FREE; pkg_sender->status = MDFLD_DSI_PKG_SENDER_FREE;
/*init regs*/ /*init regs*/
if (pipe == 0) { /* FIXME: should just copy the regmap ptr ? */
pkg_sender->dpll_reg = MRST_DPLL_A; pkg_sender->dpll_reg = map->dpll;
pkg_sender->dspcntr_reg = DSPACNTR; pkg_sender->dspcntr_reg = map->cntr;
pkg_sender->pipeconf_reg = PIPEACONF; pkg_sender->pipeconf_reg = map->conf;
pkg_sender->dsplinoff_reg = DSPALINOFF; pkg_sender->dsplinoff_reg = map->linoff;
pkg_sender->dspsurf_reg = DSPASURF; pkg_sender->dspsurf_reg = map->surf;
pkg_sender->pipestat_reg = PIPEASTAT; pkg_sender->pipestat_reg = map->status;
} else if (pipe == 2) {
pkg_sender->dpll_reg = MRST_DPLL_A;
pkg_sender->dspcntr_reg = DSPCCNTR;
pkg_sender->pipeconf_reg = PIPECCONF;
pkg_sender->dsplinoff_reg = DSPCLINOFF;
pkg_sender->dspsurf_reg = DSPCSURF;
pkg_sender->pipestat_reg = PIPECSTAT;
}
pkg_sender->mipi_intr_stat_reg = MIPI_INTR_STAT_REG(pipe); pkg_sender->mipi_intr_stat_reg = MIPI_INTR_STAT_REG(pipe);
pkg_sender->mipi_lp_gen_data_reg = MIPI_LP_GEN_DATA_REG(pipe); pkg_sender->mipi_lp_gen_data_reg = MIPI_LP_GEN_DATA_REG(pipe);
......
...@@ -162,12 +162,10 @@ mrstFindBestPLL(struct drm_crtc *crtc, int target, int refclk, ...@@ -162,12 +162,10 @@ mrstFindBestPLL(struct drm_crtc *crtc, int target, int refclk,
static void oaktrail_crtc_dpms(struct drm_crtc *crtc, int mode) static void oaktrail_crtc_dpms(struct drm_crtc *crtc, int mode)
{ {
struct drm_device *dev = crtc->dev; 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); struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
int pipe = psb_intel_crtc->pipe; int pipe = psb_intel_crtc->pipe;
int dpll_reg = (pipe == 0) ? MRST_DPLL_A : DPLL_B; const struct psb_offset *map = &dev_priv->regmap[pipe];
int dspcntr_reg = (pipe == 0) ? DSPACNTR : DSPBCNTR;
int dspbase_reg = (pipe == 0) ? MRST_DSPABASE : DSPBBASE;
int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF;
u32 temp; u32 temp;
if (!gma_power_begin(dev, true)) if (!gma_power_begin(dev, true))
...@@ -181,32 +179,32 @@ static void oaktrail_crtc_dpms(struct drm_crtc *crtc, int mode) ...@@ -181,32 +179,32 @@ static void oaktrail_crtc_dpms(struct drm_crtc *crtc, int mode)
case DRM_MODE_DPMS_STANDBY: case DRM_MODE_DPMS_STANDBY:
case DRM_MODE_DPMS_SUSPEND: case DRM_MODE_DPMS_SUSPEND:
/* Enable the DPLL */ /* Enable the DPLL */
temp = REG_READ(dpll_reg); temp = REG_READ(map->dpll);
if ((temp & DPLL_VCO_ENABLE) == 0) { if ((temp & DPLL_VCO_ENABLE) == 0) {
REG_WRITE(dpll_reg, temp); REG_WRITE(map->dpll, temp);
REG_READ(dpll_reg); REG_READ(map->dpll);
/* Wait for the clocks to stabilize. */ /* Wait for the clocks to stabilize. */
udelay(150); udelay(150);
REG_WRITE(dpll_reg, temp | DPLL_VCO_ENABLE); REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
REG_READ(dpll_reg); REG_READ(map->dpll);
/* Wait for the clocks to stabilize. */ /* Wait for the clocks to stabilize. */
udelay(150); udelay(150);
REG_WRITE(dpll_reg, temp | DPLL_VCO_ENABLE); REG_WRITE(map->dpll, temp | DPLL_VCO_ENABLE);
REG_READ(dpll_reg); REG_READ(map->dpll);
/* Wait for the clocks to stabilize. */ /* Wait for the clocks to stabilize. */
udelay(150); udelay(150);
} }
/* Enable the pipe */ /* Enable the pipe */
temp = REG_READ(pipeconf_reg); temp = REG_READ(map->conf);
if ((temp & PIPEACONF_ENABLE) == 0) if ((temp & PIPEACONF_ENABLE) == 0)
REG_WRITE(pipeconf_reg, temp | PIPEACONF_ENABLE); REG_WRITE(map->conf, temp | PIPEACONF_ENABLE);
/* Enable the plane */ /* Enable the plane */
temp = REG_READ(dspcntr_reg); temp = REG_READ(map->cntr);
if ((temp & DISPLAY_PLANE_ENABLE) == 0) { if ((temp & DISPLAY_PLANE_ENABLE) == 0) {
REG_WRITE(dspcntr_reg, REG_WRITE(map->cntr,
temp | DISPLAY_PLANE_ENABLE); temp | DISPLAY_PLANE_ENABLE);
/* Flush the plane changes */ /* Flush the plane changes */
REG_WRITE(dspbase_reg, REG_READ(dspbase_reg)); REG_WRITE(map->base, REG_READ(map->base));
} }
psb_intel_crtc_load_lut(crtc); psb_intel_crtc_load_lut(crtc);
...@@ -223,28 +221,28 @@ static void oaktrail_crtc_dpms(struct drm_crtc *crtc, int mode) ...@@ -223,28 +221,28 @@ static void oaktrail_crtc_dpms(struct drm_crtc *crtc, int mode)
/* Disable the VGA plane that we never use */ /* Disable the VGA plane that we never use */
REG_WRITE(VGACNTRL, VGA_DISP_DISABLE); REG_WRITE(VGACNTRL, VGA_DISP_DISABLE);
/* Disable display plane */ /* Disable display plane */
temp = REG_READ(dspcntr_reg); temp = REG_READ(map->cntr);
if ((temp & DISPLAY_PLANE_ENABLE) != 0) { if ((temp & DISPLAY_PLANE_ENABLE) != 0) {
REG_WRITE(dspcntr_reg, REG_WRITE(map->cntr,
temp & ~DISPLAY_PLANE_ENABLE); temp & ~DISPLAY_PLANE_ENABLE);
/* Flush the plane changes */ /* Flush the plane changes */
REG_WRITE(dspbase_reg, REG_READ(dspbase_reg)); REG_WRITE(map->base, REG_READ(map->base));
REG_READ(dspbase_reg); REG_READ(map->base);
} }
/* Next, disable display pipes */ /* Next, disable display pipes */
temp = REG_READ(pipeconf_reg); temp = REG_READ(map->conf);
if ((temp & PIPEACONF_ENABLE) != 0) { if ((temp & PIPEACONF_ENABLE) != 0) {
REG_WRITE(pipeconf_reg, temp & ~PIPEACONF_ENABLE); REG_WRITE(map->conf, temp & ~PIPEACONF_ENABLE);
REG_READ(pipeconf_reg); REG_READ(map->conf);
} }
/* Wait for for the pipe disable to take effect. */ /* Wait for for the pipe disable to take effect. */
psb_intel_wait_for_vblank(dev); psb_intel_wait_for_vblank(dev);
temp = REG_READ(dpll_reg); temp = REG_READ(map->dpll);
if ((temp & DPLL_VCO_ENABLE) != 0) { if ((temp & DPLL_VCO_ENABLE) != 0) {
REG_WRITE(dpll_reg, temp & ~DPLL_VCO_ENABLE); REG_WRITE(map->dpll, temp & ~DPLL_VCO_ENABLE);
REG_READ(dpll_reg); REG_READ(map->dpll);
} }
/* Wait for the clocks to turn off. */ /* Wait for the clocks to turn off. */
...@@ -292,17 +290,7 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc, ...@@ -292,17 +290,7 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc); struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
struct drm_psb_private *dev_priv = dev->dev_private; struct drm_psb_private *dev_priv = dev->dev_private;
int pipe = psb_intel_crtc->pipe; int pipe = psb_intel_crtc->pipe;
int fp_reg = (pipe == 0) ? MRST_FPA0 : FPB0; const struct psb_offset *map = &dev_priv->regmap[pipe];
int dpll_reg = (pipe == 0) ? MRST_DPLL_A : DPLL_B;
int dspcntr_reg = (pipe == 0) ? DSPACNTR : DSPBCNTR;
int pipeconf_reg = (pipe == 0) ? PIPEACONF : PIPEBCONF;
int htot_reg = (pipe == 0) ? HTOTAL_A : HTOTAL_B;
int hblank_reg = (pipe == 0) ? HBLANK_A : HBLANK_B;
int hsync_reg = (pipe == 0) ? HSYNC_A : HSYNC_B;
int vtot_reg = (pipe == 0) ? VTOTAL_A : VTOTAL_B;
int vblank_reg = (pipe == 0) ? VBLANK_A : VBLANK_B;
int vsync_reg = (pipe == 0) ? VSYNC_A : VSYNC_B;
int pipesrc_reg = (pipe == 0) ? PIPEASRC : PIPEBSRC;
int refclk = 0; int refclk = 0;
struct oaktrail_clock_t clock; struct oaktrail_clock_t clock;
u32 dpll = 0, fp = 0, dspcntr, pipeconf; u32 dpll = 0, fp = 0, dspcntr, pipeconf;
...@@ -350,7 +338,7 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc, ...@@ -350,7 +338,7 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
if (oaktrail_panel_fitter_pipe(dev) == pipe) if (oaktrail_panel_fitter_pipe(dev) == pipe)
REG_WRITE(PFIT_CONTROL, 0); REG_WRITE(PFIT_CONTROL, 0);
REG_WRITE(pipesrc_reg, REG_WRITE(map->src,
((mode->crtc_hdisplay - 1) << 16) | ((mode->crtc_hdisplay - 1) << 16) |
(mode->crtc_vdisplay - 1)); (mode->crtc_vdisplay - 1));
...@@ -369,34 +357,34 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc, ...@@ -369,34 +357,34 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
offsetY = (adjusted_mode->crtc_vdisplay - offsetY = (adjusted_mode->crtc_vdisplay -
mode->crtc_vdisplay) / 2; mode->crtc_vdisplay) / 2;
REG_WRITE(htot_reg, (mode->crtc_hdisplay - 1) | REG_WRITE(map->htotal, (mode->crtc_hdisplay - 1) |
((adjusted_mode->crtc_htotal - 1) << 16)); ((adjusted_mode->crtc_htotal - 1) << 16));
REG_WRITE(vtot_reg, (mode->crtc_vdisplay - 1) | REG_WRITE(map->vtotal, (mode->crtc_vdisplay - 1) |
((adjusted_mode->crtc_vtotal - 1) << 16)); ((adjusted_mode->crtc_vtotal - 1) << 16));
REG_WRITE(hblank_reg, REG_WRITE(map->hblank,
(adjusted_mode->crtc_hblank_start - offsetX - 1) | (adjusted_mode->crtc_hblank_start - offsetX - 1) |
((adjusted_mode->crtc_hblank_end - offsetX - 1) << 16)); ((adjusted_mode->crtc_hblank_end - offsetX - 1) << 16));
REG_WRITE(hsync_reg, REG_WRITE(map->hsync,
(adjusted_mode->crtc_hsync_start - offsetX - 1) | (adjusted_mode->crtc_hsync_start - offsetX - 1) |
((adjusted_mode->crtc_hsync_end - offsetX - 1) << 16)); ((adjusted_mode->crtc_hsync_end - offsetX - 1) << 16));
REG_WRITE(vblank_reg, REG_WRITE(map->vblank,
(adjusted_mode->crtc_vblank_start - offsetY - 1) | (adjusted_mode->crtc_vblank_start - offsetY - 1) |
((adjusted_mode->crtc_vblank_end - offsetY - 1) << 16)); ((adjusted_mode->crtc_vblank_end - offsetY - 1) << 16));
REG_WRITE(vsync_reg, REG_WRITE(map->vsync,
(adjusted_mode->crtc_vsync_start - offsetY - 1) | (adjusted_mode->crtc_vsync_start - offsetY - 1) |
((adjusted_mode->crtc_vsync_end - offsetY - 1) << 16)); ((adjusted_mode->crtc_vsync_end - offsetY - 1) << 16));
} else { } else {
REG_WRITE(htot_reg, (adjusted_mode->crtc_hdisplay - 1) | REG_WRITE(map->htotal, (adjusted_mode->crtc_hdisplay - 1) |
((adjusted_mode->crtc_htotal - 1) << 16)); ((adjusted_mode->crtc_htotal - 1) << 16));
REG_WRITE(vtot_reg, (adjusted_mode->crtc_vdisplay - 1) | REG_WRITE(map->vtotal, (adjusted_mode->crtc_vdisplay - 1) |
((adjusted_mode->crtc_vtotal - 1) << 16)); ((adjusted_mode->crtc_vtotal - 1) << 16));
REG_WRITE(hblank_reg, (adjusted_mode->crtc_hblank_start - 1) | REG_WRITE(map->hblank, (adjusted_mode->crtc_hblank_start - 1) |
((adjusted_mode->crtc_hblank_end - 1) << 16)); ((adjusted_mode->crtc_hblank_end - 1) << 16));
REG_WRITE(hsync_reg, (adjusted_mode->crtc_hsync_start - 1) | REG_WRITE(map->hsync, (adjusted_mode->crtc_hsync_start - 1) |
((adjusted_mode->crtc_hsync_end - 1) << 16)); ((adjusted_mode->crtc_hsync_end - 1) << 16));
REG_WRITE(vblank_reg, (adjusted_mode->crtc_vblank_start - 1) | REG_WRITE(map->vblank, (adjusted_mode->crtc_vblank_start - 1) |
((adjusted_mode->crtc_vblank_end - 1) << 16)); ((adjusted_mode->crtc_vblank_end - 1) << 16));
REG_WRITE(vsync_reg, (adjusted_mode->crtc_vsync_start - 1) | REG_WRITE(map->vsync, (adjusted_mode->crtc_vsync_start - 1) |
((adjusted_mode->crtc_vsync_end - 1) << 16)); ((adjusted_mode->crtc_vsync_end - 1) << 16));
} }
...@@ -408,10 +396,10 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc, ...@@ -408,10 +396,10 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
} }
/* setup pipeconf */ /* setup pipeconf */
pipeconf = REG_READ(pipeconf_reg); pipeconf = REG_READ(map->conf);
/* Set up the display plane register */ /* Set up the display plane register */
dspcntr = REG_READ(dspcntr_reg); dspcntr = REG_READ(map->cntr);
dspcntr |= DISPPLANE_GAMMA_ENABLE; dspcntr |= DISPPLANE_GAMMA_ENABLE;
if (pipe == 0) if (pipe == 0)
...@@ -467,30 +455,30 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc, ...@@ -467,30 +455,30 @@ static int oaktrail_crtc_mode_set(struct drm_crtc *crtc,
mrstPrintPll("chosen", &clock); mrstPrintPll("chosen", &clock);
if (dpll & DPLL_VCO_ENABLE) { if (dpll & DPLL_VCO_ENABLE) {
REG_WRITE(fp_reg, fp); REG_WRITE(map->fp0, fp);
REG_WRITE(dpll_reg, dpll & ~DPLL_VCO_ENABLE); REG_WRITE(map->dpll, dpll & ~DPLL_VCO_ENABLE);
REG_READ(dpll_reg); REG_READ(map->dpll);
/* Check the DPLLA lock bit PIPEACONF[29] */ /* Check the DPLLA lock bit PIPEACONF[29] */
udelay(150); udelay(150);
} }
REG_WRITE(fp_reg, fp); REG_WRITE(map->fp0, fp);
REG_WRITE(dpll_reg, dpll); REG_WRITE(map->dpll, dpll);
REG_READ(dpll_reg); REG_READ(map->dpll);
/* Wait for the clocks to stabilize. */ /* Wait for the clocks to stabilize. */
udelay(150); udelay(150);
/* write it again -- the BIOS does, after all */ /* write it again -- the BIOS does, after all */
REG_WRITE(dpll_reg, dpll); REG_WRITE(map->dpll, dpll);
REG_READ(dpll_reg); REG_READ(map->dpll);
/* Wait for the clocks to stabilize. */ /* Wait for the clocks to stabilize. */
udelay(150); udelay(150);
REG_WRITE(pipeconf_reg, pipeconf); REG_WRITE(map->conf, pipeconf);
REG_READ(pipeconf_reg); REG_READ(map->conf);
psb_intel_wait_for_vblank(dev); psb_intel_wait_for_vblank(dev);
REG_WRITE(dspcntr_reg, dspcntr); REG_WRITE(map->cntr, dspcntr);
psb_intel_wait_for_vblank(dev); psb_intel_wait_for_vblank(dev);
oaktrail_crtc_mode_set_exit: oaktrail_crtc_mode_set_exit:
...@@ -509,15 +497,13 @@ static int oaktrail_pipe_set_base(struct drm_crtc *crtc, ...@@ -509,15 +497,13 @@ static int oaktrail_pipe_set_base(struct drm_crtc *crtc,
int x, int y, struct drm_framebuffer *old_fb) int x, int y, struct drm_framebuffer *old_fb)
{ {
struct drm_device *dev = crtc->dev; 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); struct psb_intel_crtc *psb_intel_crtc = to_psb_intel_crtc(crtc);
struct psb_framebuffer *psbfb = to_psb_fb(crtc->fb); struct psb_framebuffer *psbfb = to_psb_fb(crtc->fb);
int pipe = psb_intel_crtc->pipe; int pipe = psb_intel_crtc->pipe;
const struct psb_offset *map = &dev_priv->regmap[pipe];
unsigned long start, offset; unsigned long start, offset;
int dspbase = (pipe == 0 ? DSPALINOFF : DSPBBASE);
int dspsurf = (pipe == 0 ? DSPASURF : DSPBSURF);
int dspstride = (pipe == 0) ? DSPASTRIDE : DSPBSTRIDE;
int dspcntr_reg = (pipe == 0) ? DSPACNTR : DSPBCNTR;
u32 dspcntr; u32 dspcntr;
int ret = 0; int ret = 0;
...@@ -533,9 +519,9 @@ static int oaktrail_pipe_set_base(struct drm_crtc *crtc, ...@@ -533,9 +519,9 @@ static int oaktrail_pipe_set_base(struct drm_crtc *crtc,
start = psbfb->gtt->offset; start = psbfb->gtt->offset;
offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8); offset = y * crtc->fb->pitches[0] + x * (crtc->fb->bits_per_pixel / 8);
REG_WRITE(dspstride, crtc->fb->pitches[0]); REG_WRITE(map->stride, crtc->fb->pitches[0]);
dspcntr = REG_READ(dspcntr_reg); dspcntr = REG_READ(map->cntr);
dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; dspcntr &= ~DISPPLANE_PIXFORMAT_MASK;
switch (crtc->fb->bits_per_pixel) { switch (crtc->fb->bits_per_pixel) {
...@@ -557,12 +543,12 @@ static int oaktrail_pipe_set_base(struct drm_crtc *crtc, ...@@ -557,12 +543,12 @@ static int oaktrail_pipe_set_base(struct drm_crtc *crtc,
ret = -EINVAL; ret = -EINVAL;
goto pipe_set_base_exit; goto pipe_set_base_exit;
} }
REG_WRITE(dspcntr_reg, dspcntr); REG_WRITE(map->cntr, dspcntr);
REG_WRITE(dspbase, offset); REG_WRITE(map->base, offset);
REG_READ(dspbase); REG_READ(map->base);
REG_WRITE(dspsurf, start); REG_WRITE(map->surf, start);
REG_READ(dspsurf); REG_READ(map->surf);
pipe_set_base_exit: pipe_set_base_exit:
gma_power_end(dev); gma_power_end(dev);
......
...@@ -475,7 +475,7 @@ static const struct psb_offset oaktrail_regmap[2] = { ...@@ -475,7 +475,7 @@ static const struct psb_offset oaktrail_regmap[2] = {
.size = DSPASIZE, .size = DSPASIZE,
.pos = DSPAPOS, .pos = DSPAPOS,
.surf = DSPASURF, .surf = DSPASURF,
.addr = DSPABASE, .addr = MRST_DSPABASE,
.status = PIPEASTAT, .status = PIPEASTAT,
.linoff = DSPALINOFF, .linoff = DSPALINOFF,
.tileoff = DSPATILEOFF, .tileoff = DSPATILEOFF,
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment