diff options
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_fbcon.c | 30 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_fbcon.h | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv04_fbcon.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nv50_fbcon.c | 9 |
4 files changed, 42 insertions, 12 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c index eddadaccc285..ea879a2efef3 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c | |||
| @@ -107,6 +107,34 @@ static struct fb_ops nouveau_fbcon_ops = { | |||
| 107 | .fb_setcmap = drm_fb_helper_setcmap, | 107 | .fb_setcmap = drm_fb_helper_setcmap, |
| 108 | }; | 108 | }; |
| 109 | 109 | ||
| 110 | static struct fb_ops nv04_fbcon_ops = { | ||
| 111 | .owner = THIS_MODULE, | ||
| 112 | .fb_check_var = drm_fb_helper_check_var, | ||
| 113 | .fb_set_par = drm_fb_helper_set_par, | ||
| 114 | .fb_setcolreg = drm_fb_helper_setcolreg, | ||
| 115 | .fb_fillrect = nv04_fbcon_fillrect, | ||
| 116 | .fb_copyarea = nv04_fbcon_copyarea, | ||
| 117 | .fb_imageblit = nv04_fbcon_imageblit, | ||
| 118 | .fb_sync = nouveau_fbcon_sync, | ||
| 119 | .fb_pan_display = drm_fb_helper_pan_display, | ||
| 120 | .fb_blank = drm_fb_helper_blank, | ||
| 121 | .fb_setcmap = drm_fb_helper_setcmap, | ||
| 122 | }; | ||
| 123 | |||
| 124 | static struct fb_ops nv50_fbcon_ops = { | ||
| 125 | .owner = THIS_MODULE, | ||
| 126 | .fb_check_var = drm_fb_helper_check_var, | ||
| 127 | .fb_set_par = drm_fb_helper_set_par, | ||
| 128 | .fb_setcolreg = drm_fb_helper_setcolreg, | ||
| 129 | .fb_fillrect = nv50_fbcon_fillrect, | ||
| 130 | .fb_copyarea = nv50_fbcon_copyarea, | ||
| 131 | .fb_imageblit = nv50_fbcon_imageblit, | ||
| 132 | .fb_sync = nouveau_fbcon_sync, | ||
| 133 | .fb_pan_display = drm_fb_helper_pan_display, | ||
| 134 | .fb_blank = drm_fb_helper_blank, | ||
| 135 | .fb_setcmap = drm_fb_helper_setcmap, | ||
| 136 | }; | ||
| 137 | |||
| 110 | static void nouveau_fbcon_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, | 138 | static void nouveau_fbcon_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, |
| 111 | u16 blue, int regno) | 139 | u16 blue, int regno) |
| 112 | { | 140 | { |
| @@ -324,9 +352,11 @@ nouveau_fbcon_create(struct drm_device *dev, uint32_t fb_width, | |||
| 324 | switch (dev_priv->card_type) { | 352 | switch (dev_priv->card_type) { |
| 325 | case NV_50: | 353 | case NV_50: |
| 326 | nv50_fbcon_accel_init(info); | 354 | nv50_fbcon_accel_init(info); |
| 355 | info->fbops = &nv50_fbcon_ops; | ||
| 327 | break; | 356 | break; |
| 328 | default: | 357 | default: |
| 329 | nv04_fbcon_accel_init(info); | 358 | nv04_fbcon_accel_init(info); |
| 359 | info->fbops = &nv04_fbcon_ops; | ||
| 330 | break; | 360 | break; |
| 331 | }; | 361 | }; |
| 332 | } | 362 | } |
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.h b/drivers/gpu/drm/nouveau/nouveau_fbcon.h index 462e0b87b4bd..f9c34e1a8c11 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fbcon.h +++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.h | |||
| @@ -40,7 +40,13 @@ int nouveau_fbcon_remove(struct drm_device *dev, struct drm_framebuffer *fb); | |||
| 40 | void nouveau_fbcon_restore(void); | 40 | void nouveau_fbcon_restore(void); |
| 41 | void nouveau_fbcon_zfill(struct drm_device *dev); | 41 | void nouveau_fbcon_zfill(struct drm_device *dev); |
| 42 | 42 | ||
| 43 | void nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region); | ||
| 44 | void nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect); | ||
| 45 | void nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image); | ||
| 43 | int nv04_fbcon_accel_init(struct fb_info *info); | 46 | int nv04_fbcon_accel_init(struct fb_info *info); |
| 47 | void nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect); | ||
| 48 | void nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region); | ||
| 49 | void nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image); | ||
| 44 | int nv50_fbcon_accel_init(struct fb_info *info); | 50 | int nv50_fbcon_accel_init(struct fb_info *info); |
| 45 | 51 | ||
| 46 | void nouveau_fbcon_gpu_lockup(struct fb_info *info); | 52 | void nouveau_fbcon_gpu_lockup(struct fb_info *info); |
diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c index d910873c1368..fd01caabd5c3 100644 --- a/drivers/gpu/drm/nouveau/nv04_fbcon.c +++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #include "nouveau_dma.h" | 27 | #include "nouveau_dma.h" |
| 28 | #include "nouveau_fbcon.h" | 28 | #include "nouveau_fbcon.h" |
| 29 | 29 | ||
| 30 | static void | 30 | void |
| 31 | nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) | 31 | nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) |
| 32 | { | 32 | { |
| 33 | struct nouveau_fbcon_par *par = info->par; | 33 | struct nouveau_fbcon_par *par = info->par; |
| @@ -54,7 +54,7 @@ nv04_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) | |||
| 54 | FIRE_RING(chan); | 54 | FIRE_RING(chan); |
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | static void | 57 | void |
| 58 | nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | 58 | nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) |
| 59 | { | 59 | { |
| 60 | struct nouveau_fbcon_par *par = info->par; | 60 | struct nouveau_fbcon_par *par = info->par; |
| @@ -88,7 +88,7 @@ nv04_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | |||
| 88 | FIRE_RING(chan); | 88 | FIRE_RING(chan); |
| 89 | } | 89 | } |
| 90 | 90 | ||
| 91 | static void | 91 | void |
| 92 | nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) | 92 | nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) |
| 93 | { | 93 | { |
| 94 | struct nouveau_fbcon_par *par = info->par; | 94 | struct nouveau_fbcon_par *par = info->par; |
| @@ -307,9 +307,6 @@ nv04_fbcon_accel_init(struct fb_info *info) | |||
| 307 | 307 | ||
| 308 | FIRE_RING(chan); | 308 | FIRE_RING(chan); |
| 309 | 309 | ||
| 310 | info->fbops->fb_fillrect = nv04_fbcon_fillrect; | ||
| 311 | info->fbops->fb_copyarea = nv04_fbcon_copyarea; | ||
| 312 | info->fbops->fb_imageblit = nv04_fbcon_imageblit; | ||
| 313 | return 0; | 310 | return 0; |
| 314 | } | 311 | } |
| 315 | 312 | ||
diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50_fbcon.c index e4f279ee61cf..0f57cdf7ccb2 100644 --- a/drivers/gpu/drm/nouveau/nv50_fbcon.c +++ b/drivers/gpu/drm/nouveau/nv50_fbcon.c | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | #include "nouveau_dma.h" | 3 | #include "nouveau_dma.h" |
| 4 | #include "nouveau_fbcon.h" | 4 | #include "nouveau_fbcon.h" |
| 5 | 5 | ||
| 6 | static void | 6 | void |
| 7 | nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | 7 | nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) |
| 8 | { | 8 | { |
| 9 | struct nouveau_fbcon_par *par = info->par; | 9 | struct nouveau_fbcon_par *par = info->par; |
| @@ -46,7 +46,7 @@ nv50_fbcon_fillrect(struct fb_info *info, const struct fb_fillrect *rect) | |||
| 46 | FIRE_RING(chan); | 46 | FIRE_RING(chan); |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | static void | 49 | void |
| 50 | nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) | 50 | nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) |
| 51 | { | 51 | { |
| 52 | struct nouveau_fbcon_par *par = info->par; | 52 | struct nouveau_fbcon_par *par = info->par; |
| @@ -81,7 +81,7 @@ nv50_fbcon_copyarea(struct fb_info *info, const struct fb_copyarea *region) | |||
| 81 | FIRE_RING(chan); | 81 | FIRE_RING(chan); |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | static void | 84 | void |
| 85 | nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) | 85 | nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image) |
| 86 | { | 86 | { |
| 87 | struct nouveau_fbcon_par *par = info->par; | 87 | struct nouveau_fbcon_par *par = info->par; |
| @@ -262,9 +262,6 @@ nv50_fbcon_accel_init(struct fb_info *info) | |||
| 262 | OUT_RING(chan, info->fix.smem_start - dev_priv->fb_phys + | 262 | OUT_RING(chan, info->fix.smem_start - dev_priv->fb_phys + |
| 263 | dev_priv->vm_vram_base); | 263 | dev_priv->vm_vram_base); |
| 264 | 264 | ||
| 265 | info->fbops->fb_fillrect = nv50_fbcon_fillrect; | ||
| 266 | info->fbops->fb_copyarea = nv50_fbcon_copyarea; | ||
| 267 | info->fbops->fb_imageblit = nv50_fbcon_imageblit; | ||
| 268 | return 0; | 265 | return 0; |
| 269 | } | 266 | } |
| 270 | 267 | ||
