mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	drm/nouveau/kms: Move struct nouveau_framebuffer.vma to struct nouveau_fbdev
The vma field of struct nouveau_framebuffer is a special field for the the accelerated fbdev console. Hence there's at most one single instance for the active console. Moving it into struct nouveau_fbdev makes struct nouveau_framebuffer slightly smaller and brings it closer to struct drm_framebuffer. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
		
							parent
							
								
									e27ad35e69
								
							
						
					
					
						commit
						84c862b572
					
				
					 5 changed files with 14 additions and 14 deletions
				
			
		|  | @ -11,7 +11,6 @@ | |||
| struct nouveau_framebuffer { | ||||
| 	struct drm_framebuffer base; | ||||
| 	struct nouveau_bo *nvbo; | ||||
| 	struct nouveau_vma *vma; | ||||
| }; | ||||
| 
 | ||||
| static inline struct nouveau_framebuffer * | ||||
|  |  | |||
|  | @ -353,7 +353,7 @@ nouveau_fbcon_create(struct drm_fb_helper *helper, | |||
| 
 | ||||
| 	chan = nouveau_nofbaccel ? NULL : drm->channel; | ||||
| 	if (chan && device->info.family >= NV_DEVICE_INFO_V0_TESLA) { | ||||
| 		ret = nouveau_vma_new(nvbo, chan->vmm, &fb->vma); | ||||
| 		ret = nouveau_vma_new(nvbo, chan->vmm, &fbcon->vma); | ||||
| 		if (ret) { | ||||
| 			NV_ERROR(drm, "failed to map fb into chan: %d\n", ret); | ||||
| 			chan = NULL; | ||||
|  | @ -400,7 +400,7 @@ nouveau_fbcon_create(struct drm_fb_helper *helper, | |||
| 
 | ||||
| out_unlock: | ||||
| 	if (chan) | ||||
| 		nouveau_vma_del(&fb->vma); | ||||
| 		nouveau_vma_del(&fbcon->vma); | ||||
| 	nouveau_bo_unmap(fb->nvbo); | ||||
| out_unpin: | ||||
| 	nouveau_bo_unpin(fb->nvbo); | ||||
|  | @ -419,7 +419,7 @@ nouveau_fbcon_destroy(struct drm_device *dev, struct nouveau_fbdev *fbcon) | |||
| 	drm_fb_helper_fini(&fbcon->helper); | ||||
| 
 | ||||
| 	if (nouveau_fb && nouveau_fb->nvbo) { | ||||
| 		nouveau_vma_del(&nouveau_fb->vma); | ||||
| 		nouveau_vma_del(&fbcon->vma); | ||||
| 		nouveau_bo_unmap(nouveau_fb->nvbo); | ||||
| 		nouveau_bo_unpin(nouveau_fb->nvbo); | ||||
| 		drm_framebuffer_put(&nouveau_fb->base); | ||||
|  |  | |||
|  | @ -31,6 +31,8 @@ | |||
| 
 | ||||
| #include "nouveau_display.h" | ||||
| 
 | ||||
| struct nouveau_vma; | ||||
| 
 | ||||
| struct nouveau_fbdev { | ||||
| 	struct drm_fb_helper helper; /* must be first */ | ||||
| 	unsigned int saved_flags; | ||||
|  | @ -41,6 +43,7 @@ struct nouveau_fbdev { | |||
| 	struct nvif_object gdi; | ||||
| 	struct nvif_object blit; | ||||
| 	struct nvif_object twod; | ||||
| 	struct nouveau_vma *vma; | ||||
| 
 | ||||
| 	struct mutex hotplug_lock; | ||||
| 	bool hotplug_waiting; | ||||
|  |  | |||
|  | @ -149,7 +149,6 @@ int | |||
| nv50_fbcon_accel_init(struct fb_info *info) | ||||
| { | ||||
| 	struct nouveau_fbdev *nfbdev = info->par; | ||||
| 	struct nouveau_framebuffer *fb = nouveau_framebuffer(nfbdev->helper.fb); | ||||
| 	struct drm_device *dev = nfbdev->helper.dev; | ||||
| 	struct nouveau_drm *drm = nouveau_drm(dev); | ||||
| 	struct nouveau_channel *chan = drm->channel; | ||||
|  | @ -240,8 +239,8 @@ nv50_fbcon_accel_init(struct fb_info *info) | |||
| 	OUT_RING(chan, info->fix.line_length); | ||||
| 	OUT_RING(chan, info->var.xres_virtual); | ||||
| 	OUT_RING(chan, info->var.yres_virtual); | ||||
| 	OUT_RING(chan, upper_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING(chan, lower_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING(chan, upper_32_bits(nfbdev->vma->addr)); | ||||
| 	OUT_RING(chan, lower_32_bits(nfbdev->vma->addr)); | ||||
| 	BEGIN_NV04(chan, NvSub2D, 0x0230, 2); | ||||
| 	OUT_RING(chan, format); | ||||
| 	OUT_RING(chan, 1); | ||||
|  | @ -249,8 +248,8 @@ nv50_fbcon_accel_init(struct fb_info *info) | |||
| 	OUT_RING(chan, info->fix.line_length); | ||||
| 	OUT_RING(chan, info->var.xres_virtual); | ||||
| 	OUT_RING(chan, info->var.yres_virtual); | ||||
| 	OUT_RING(chan, upper_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING(chan, lower_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING(chan, upper_32_bits(nfbdev->vma->addr)); | ||||
| 	OUT_RING(chan, lower_32_bits(nfbdev->vma->addr)); | ||||
| 	FIRE_RING(chan); | ||||
| 
 | ||||
| 	return 0; | ||||
|  |  | |||
|  | @ -150,7 +150,6 @@ nvc0_fbcon_accel_init(struct fb_info *info) | |||
| { | ||||
| 	struct nouveau_fbdev *nfbdev = info->par; | ||||
| 	struct drm_device *dev = nfbdev->helper.dev; | ||||
| 	struct nouveau_framebuffer *fb = nouveau_framebuffer(nfbdev->helper.fb); | ||||
| 	struct nouveau_drm *drm = nouveau_drm(dev); | ||||
| 	struct nouveau_channel *chan = drm->channel; | ||||
| 	int ret, format; | ||||
|  | @ -240,8 +239,8 @@ nvc0_fbcon_accel_init(struct fb_info *info) | |||
| 	OUT_RING  (chan, info->fix.line_length); | ||||
| 	OUT_RING  (chan, info->var.xres_virtual); | ||||
| 	OUT_RING  (chan, info->var.yres_virtual); | ||||
| 	OUT_RING  (chan, upper_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING  (chan, lower_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING  (chan, upper_32_bits(nfbdev->vma->addr)); | ||||
| 	OUT_RING  (chan, lower_32_bits(nfbdev->vma->addr)); | ||||
| 	BEGIN_NVC0(chan, NvSub2D, 0x0230, 10); | ||||
| 	OUT_RING  (chan, format); | ||||
| 	OUT_RING  (chan, 1); | ||||
|  | @ -251,8 +250,8 @@ nvc0_fbcon_accel_init(struct fb_info *info) | |||
| 	OUT_RING  (chan, info->fix.line_length); | ||||
| 	OUT_RING  (chan, info->var.xres_virtual); | ||||
| 	OUT_RING  (chan, info->var.yres_virtual); | ||||
| 	OUT_RING  (chan, upper_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING  (chan, lower_32_bits(fb->vma->addr)); | ||||
| 	OUT_RING  (chan, upper_32_bits(nfbdev->vma->addr)); | ||||
| 	OUT_RING  (chan, lower_32_bits(nfbdev->vma->addr)); | ||||
| 	FIRE_RING (chan); | ||||
| 
 | ||||
| 	return 0; | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Thomas Zimmermann
						Thomas Zimmermann