mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	drm: move i915_kick_out_vgacon to vgaarb
Also rename it to vga_remove_vgacon and add kerneldoc text. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Link: http://patchwork.freedesktop.org/patch/msgid/20190301092502.30948-2-kraxel@redhat.com
This commit is contained in:
		
							parent
							
								
									e552f08510
								
							
						
					
					
						commit
						c6b38fbbde
					
				
					 3 changed files with 52 additions and 34 deletions
				
			
		|  | @ -757,39 +757,6 @@ static int i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv) | |||
| 	return ret; | ||||
| } | ||||
| 
 | ||||
| #if !defined(CONFIG_VGA_CONSOLE) | ||||
| static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) | ||||
| { | ||||
| 	return 0; | ||||
| } | ||||
| #elif !defined(CONFIG_DUMMY_CONSOLE) | ||||
| static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) | ||||
| { | ||||
| 	return -ENODEV; | ||||
| } | ||||
| #else | ||||
| static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	DRM_INFO("Replacing VGA console driver\n"); | ||||
| 
 | ||||
| 	console_lock(); | ||||
| 	if (con_is_bound(&vga_con)) | ||||
| 		ret = do_take_over_console(&dummy_con, 0, MAX_NR_CONSOLES - 1, 1); | ||||
| 	if (ret == 0) { | ||||
| 		ret = do_unregister_con_driver(&vga_con); | ||||
| 
 | ||||
| 		/* Ignore "already unregistered". */ | ||||
| 		if (ret == -ENODEV) | ||||
| 			ret = 0; | ||||
| 	} | ||||
| 	console_unlock(); | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| static void intel_init_dpio(struct drm_i915_private *dev_priv) | ||||
| { | ||||
| 	/*
 | ||||
|  | @ -1420,7 +1387,7 @@ static int i915_driver_init_hw(struct drm_i915_private *dev_priv) | |||
| 		goto err_ggtt; | ||||
| 	} | ||||
| 
 | ||||
| 	ret = i915_kick_out_vgacon(dev_priv); | ||||
| 	ret = vga_remove_vgacon(pdev); | ||||
| 	if (ret) { | ||||
| 		DRM_ERROR("failed to remove conflicting VGA console\n"); | ||||
| 		goto err_ggtt; | ||||
|  |  | |||
|  | @ -48,6 +48,8 @@ | |||
| #include <linux/miscdevice.h> | ||||
| #include <linux/slab.h> | ||||
| #include <linux/screen_info.h> | ||||
| #include <linux/vt.h> | ||||
| #include <linux/console.h> | ||||
| 
 | ||||
| #include <linux/uaccess.h> | ||||
| 
 | ||||
|  | @ -168,6 +170,53 @@ void vga_set_default_device(struct pci_dev *pdev) | |||
| 	vga_default = pci_dev_get(pdev); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * vga_remove_vgacon - deactivete vga console | ||||
|  * | ||||
|  * Unbind and unregister vgacon in case pdev is the default vga | ||||
|  * device.  Can be called by gpu drivers on initialization to make | ||||
|  * sure vga register access done by vgacon will not disturb the | ||||
|  * device. | ||||
|  * | ||||
|  * @pdev: pci device. | ||||
|  */ | ||||
| #if !defined(CONFIG_VGA_CONSOLE) | ||||
| int vga_remove_vgacon(struct pci_dev *pdev) | ||||
| { | ||||
| 	return 0; | ||||
| } | ||||
| #elif !defined(CONFIG_DUMMY_CONSOLE) | ||||
| int vga_remove_vgacon(struct pci_dev *pdev) | ||||
| { | ||||
| 	return -ENODEV; | ||||
| } | ||||
| #else | ||||
| int vga_remove_vgacon(struct pci_dev *pdev) | ||||
| { | ||||
| 	int ret = 0; | ||||
| 
 | ||||
| 	if (pdev != vga_default) | ||||
| 		return 0; | ||||
| 	vgaarb_info(&pdev->dev, "deactivate vga console\n"); | ||||
| 
 | ||||
| 	console_lock(); | ||||
| 	if (con_is_bound(&vga_con)) | ||||
| 		ret = do_take_over_console(&dummy_con, 0, | ||||
| 					   MAX_NR_CONSOLES - 1, 1); | ||||
| 	if (ret == 0) { | ||||
| 		ret = do_unregister_con_driver(&vga_con); | ||||
| 
 | ||||
| 		/* Ignore "already unregistered". */ | ||||
| 		if (ret == -ENODEV) | ||||
| 			ret = 0; | ||||
| 	} | ||||
| 	console_unlock(); | ||||
| 
 | ||||
| 	return ret; | ||||
| } | ||||
| #endif | ||||
| EXPORT_SYMBOL(vga_remove_vgacon); | ||||
| 
 | ||||
| static inline void vga_irq_set_state(struct vga_device *vgadev, bool state) | ||||
| { | ||||
| 	if (vgadev->irq_set_state) | ||||
|  |  | |||
|  | @ -125,9 +125,11 @@ extern void vga_put(struct pci_dev *pdev, unsigned int rsrc); | |||
| #ifdef CONFIG_VGA_ARB | ||||
| extern struct pci_dev *vga_default_device(void); | ||||
| extern void vga_set_default_device(struct pci_dev *pdev); | ||||
| extern int vga_remove_vgacon(struct pci_dev *pdev); | ||||
| #else | ||||
| static inline struct pci_dev *vga_default_device(void) { return NULL; }; | ||||
| static inline void vga_set_default_device(struct pci_dev *pdev) { }; | ||||
| static inline int vga_remove_vgacon(struct pci_dev *pdev) { return 0; }; | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Gerd Hoffmann
						Gerd Hoffmann