|
@@ -107,6 +107,34 @@ static struct fb_ops nouveau_fbcon_ops = {
|
|
|
.fb_setcmap = drm_fb_helper_setcmap,
|
|
|
};
|
|
|
|
|
|
+static struct fb_ops nv04_fbcon_ops = {
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .fb_check_var = drm_fb_helper_check_var,
|
|
|
+ .fb_set_par = drm_fb_helper_set_par,
|
|
|
+ .fb_setcolreg = drm_fb_helper_setcolreg,
|
|
|
+ .fb_fillrect = nv04_fbcon_fillrect,
|
|
|
+ .fb_copyarea = nv04_fbcon_copyarea,
|
|
|
+ .fb_imageblit = nv04_fbcon_imageblit,
|
|
|
+ .fb_sync = nouveau_fbcon_sync,
|
|
|
+ .fb_pan_display = drm_fb_helper_pan_display,
|
|
|
+ .fb_blank = drm_fb_helper_blank,
|
|
|
+ .fb_setcmap = drm_fb_helper_setcmap,
|
|
|
+};
|
|
|
+
|
|
|
+static struct fb_ops nv50_fbcon_ops = {
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .fb_check_var = drm_fb_helper_check_var,
|
|
|
+ .fb_set_par = drm_fb_helper_set_par,
|
|
|
+ .fb_setcolreg = drm_fb_helper_setcolreg,
|
|
|
+ .fb_fillrect = nv50_fbcon_fillrect,
|
|
|
+ .fb_copyarea = nv50_fbcon_copyarea,
|
|
|
+ .fb_imageblit = nv50_fbcon_imageblit,
|
|
|
+ .fb_sync = nouveau_fbcon_sync,
|
|
|
+ .fb_pan_display = drm_fb_helper_pan_display,
|
|
|
+ .fb_blank = drm_fb_helper_blank,
|
|
|
+ .fb_setcmap = drm_fb_helper_setcmap,
|
|
|
+};
|
|
|
+
|
|
|
static void nouveau_fbcon_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
|
|
|
u16 blue, int regno)
|
|
|
{
|
|
@@ -324,9 +352,11 @@ nouveau_fbcon_create(struct drm_device *dev, uint32_t fb_width,
|
|
|
switch (dev_priv->card_type) {
|
|
|
case NV_50:
|
|
|
nv50_fbcon_accel_init(info);
|
|
|
+ info->fbops = &nv50_fbcon_ops;
|
|
|
break;
|
|
|
default:
|
|
|
nv04_fbcon_accel_init(info);
|
|
|
+ info->fbops = &nv04_fbcon_ops;
|
|
|
break;
|
|
|
};
|
|
|
}
|