drm/nv50: fix fbcon when framebuffer above 4GiB mark
This can't actually happen right now, but lets fix it anyway. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
0dd8c3f093
commit
0c32497198
1 changed files with 7 additions and 6 deletions
|
@ -157,8 +157,11 @@ nv50_fbcon_accel_init(struct fb_info *info)
|
||||||
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
struct drm_nouveau_private *dev_priv = dev->dev_private;
|
||||||
struct nouveau_channel *chan = dev_priv->channel;
|
struct nouveau_channel *chan = dev_priv->channel;
|
||||||
struct nouveau_gpuobj *eng2d = NULL;
|
struct nouveau_gpuobj *eng2d = NULL;
|
||||||
|
uint64_t fb;
|
||||||
int ret, format;
|
int ret, format;
|
||||||
|
|
||||||
|
fb = info->fix.smem_start - dev_priv->fb_phys + dev_priv->vm_vram_base;
|
||||||
|
|
||||||
switch (info->var.bits_per_pixel) {
|
switch (info->var.bits_per_pixel) {
|
||||||
case 8:
|
case 8:
|
||||||
format = 0xf3;
|
format = 0xf3;
|
||||||
|
@ -248,9 +251,8 @@ nv50_fbcon_accel_init(struct fb_info *info)
|
||||||
OUT_RING(chan, info->fix.line_length);
|
OUT_RING(chan, info->fix.line_length);
|
||||||
OUT_RING(chan, info->var.xres_virtual);
|
OUT_RING(chan, info->var.xres_virtual);
|
||||||
OUT_RING(chan, info->var.yres_virtual);
|
OUT_RING(chan, info->var.yres_virtual);
|
||||||
OUT_RING(chan, 0);
|
OUT_RING(chan, upper_32_bits(fb));
|
||||||
OUT_RING(chan, info->fix.smem_start - dev_priv->fb_phys +
|
OUT_RING(chan, lower_32_bits(fb));
|
||||||
dev_priv->vm_vram_base);
|
|
||||||
BEGIN_RING(chan, NvSub2D, 0x0230, 2);
|
BEGIN_RING(chan, NvSub2D, 0x0230, 2);
|
||||||
OUT_RING(chan, format);
|
OUT_RING(chan, format);
|
||||||
OUT_RING(chan, 1);
|
OUT_RING(chan, 1);
|
||||||
|
@ -258,9 +260,8 @@ nv50_fbcon_accel_init(struct fb_info *info)
|
||||||
OUT_RING(chan, info->fix.line_length);
|
OUT_RING(chan, info->fix.line_length);
|
||||||
OUT_RING(chan, info->var.xres_virtual);
|
OUT_RING(chan, info->var.xres_virtual);
|
||||||
OUT_RING(chan, info->var.yres_virtual);
|
OUT_RING(chan, info->var.yres_virtual);
|
||||||
OUT_RING(chan, 0);
|
OUT_RING(chan, upper_32_bits(fb));
|
||||||
OUT_RING(chan, info->fix.smem_start - dev_priv->fb_phys +
|
OUT_RING(chan, lower_32_bits(fb));
|
||||||
dev_priv->vm_vram_base);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue