mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +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
@ -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…
Reference in New Issue
Block a user