提交 0c324971 编写于 作者: B Ben Skeggs

drm/nv50: fix fbcon when framebuffer above 4GiB mark

This can't actually happen right now, but lets fix it anyway.
Signed-off-by: NBen Skeggs <bskeggs@redhat.com>
上级 0dd8c3f0
...@@ -157,8 +157,11 @@ nv50_fbcon_accel_init(struct fb_info *info) ...@@ -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) ...@@ -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) ...@@ -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;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册