|
@@ -123,15 +123,25 @@ struct dma_buf *radeon_gem_prime_export(struct drm_device *dev,
|
|
|
int flags);
|
|
|
struct drm_gem_object *radeon_gem_prime_import(struct drm_device *dev,
|
|
|
struct dma_buf *dma_buf);
|
|
|
+extern long radeon_kms_compat_ioctl(struct file *filp, unsigned int cmd,
|
|
|
+ unsigned long arg);
|
|
|
|
|
|
#if defined(CONFIG_DEBUG_FS)
|
|
|
int radeon_debugfs_init(struct drm_minor *minor);
|
|
|
void radeon_debugfs_cleanup(struct drm_minor *minor);
|
|
|
#endif
|
|
|
|
|
|
+/* atpx handler */
|
|
|
+#if defined(CONFIG_VGA_SWITCHEROO)
|
|
|
+void radeon_register_atpx_handler(void);
|
|
|
+void radeon_unregister_atpx_handler(void);
|
|
|
+#else
|
|
|
+static inline void radeon_register_atpx_handler(void) {}
|
|
|
+static inline void radeon_unregister_atpx_handler(void) {}
|
|
|
+#endif
|
|
|
|
|
|
int radeon_no_wb;
|
|
|
-int radeon_modeset = -1;
|
|
|
+int radeon_modeset = 1;
|
|
|
int radeon_dynclks = -1;
|
|
|
int radeon_r4xx_atom = 0;
|
|
|
int radeon_agpmode = 0;
|
|
@@ -199,6 +209,14 @@ module_param_named(msi, radeon_msi, int, 0444);
|
|
|
MODULE_PARM_DESC(lockup_timeout, "GPU lockup timeout in ms (defaul 10000 = 10 seconds, 0 = disable)");
|
|
|
module_param_named(lockup_timeout, radeon_lockup_timeout, int, 0444);
|
|
|
|
|
|
+static struct pci_device_id pciidlist[] = {
|
|
|
+ radeon_PCI_IDS
|
|
|
+};
|
|
|
+
|
|
|
+MODULE_DEVICE_TABLE(pci, pciidlist);
|
|
|
+
|
|
|
+#ifdef CONFIG_DRM_RADEON_UMS
|
|
|
+
|
|
|
static int radeon_suspend(struct drm_device *dev, pm_message_t state)
|
|
|
{
|
|
|
drm_radeon_private_t *dev_priv = dev->dev_private;
|
|
@@ -227,14 +245,6 @@ static int radeon_resume(struct drm_device *dev)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static struct pci_device_id pciidlist[] = {
|
|
|
- radeon_PCI_IDS
|
|
|
-};
|
|
|
-
|
|
|
-#if defined(CONFIG_DRM_RADEON_KMS)
|
|
|
-MODULE_DEVICE_TABLE(pci, pciidlist);
|
|
|
-#endif
|
|
|
-
|
|
|
static const struct file_operations radeon_driver_old_fops = {
|
|
|
.owner = THIS_MODULE,
|
|
|
.open = drm_open,
|
|
@@ -284,6 +294,8 @@ static struct drm_driver driver_old = {
|
|
|
.patchlevel = DRIVER_PATCHLEVEL,
|
|
|
};
|
|
|
|
|
|
+#endif
|
|
|
+
|
|
|
static struct drm_driver kms_driver;
|
|
|
|
|
|
static int radeon_kick_out_firmware_fb(struct pci_dev *pdev)
|
|
@@ -411,10 +423,12 @@ static struct drm_driver kms_driver = {
|
|
|
static struct drm_driver *driver;
|
|
|
static struct pci_driver *pdriver;
|
|
|
|
|
|
+#ifdef CONFIG_DRM_RADEON_UMS
|
|
|
static struct pci_driver radeon_pci_driver = {
|
|
|
.name = DRIVER_NAME,
|
|
|
.id_table = pciidlist,
|
|
|
};
|
|
|
+#endif
|
|
|
|
|
|
static struct pci_driver radeon_kms_pci_driver = {
|
|
|
.name = DRIVER_NAME,
|
|
@@ -427,28 +441,6 @@ static struct pci_driver radeon_kms_pci_driver = {
|
|
|
|
|
|
static int __init radeon_init(void)
|
|
|
{
|
|
|
- driver = &driver_old;
|
|
|
- pdriver = &radeon_pci_driver;
|
|
|
- driver->num_ioctls = radeon_max_ioctl;
|
|
|
-#ifdef CONFIG_VGA_CONSOLE
|
|
|
- if (vgacon_text_force() && radeon_modeset == -1) {
|
|
|
- DRM_INFO("VGACON disable radeon kernel modesetting.\n");
|
|
|
- driver = &driver_old;
|
|
|
- pdriver = &radeon_pci_driver;
|
|
|
- driver->driver_features &= ~DRIVER_MODESET;
|
|
|
- radeon_modeset = 0;
|
|
|
- }
|
|
|
-#endif
|
|
|
- /* if enabled by default */
|
|
|
- if (radeon_modeset == -1) {
|
|
|
-#ifdef CONFIG_DRM_RADEON_KMS
|
|
|
- DRM_INFO("radeon defaulting to kernel modesetting.\n");
|
|
|
- radeon_modeset = 1;
|
|
|
-#else
|
|
|
- DRM_INFO("radeon defaulting to userspace modesetting.\n");
|
|
|
- radeon_modeset = 0;
|
|
|
-#endif
|
|
|
- }
|
|
|
if (radeon_modeset == 1) {
|
|
|
DRM_INFO("radeon kernel modesetting enabled.\n");
|
|
|
driver = &kms_driver;
|
|
@@ -456,9 +448,21 @@ static int __init radeon_init(void)
|
|
|
driver->driver_features |= DRIVER_MODESET;
|
|
|
driver->num_ioctls = radeon_max_kms_ioctl;
|
|
|
radeon_register_atpx_handler();
|
|
|
+
|
|
|
+ } else {
|
|
|
+#ifdef CONFIG_DRM_RADEON_UMS
|
|
|
+ DRM_INFO("radeon userspace modesetting enabled.\n");
|
|
|
+ driver = &driver_old;
|
|
|
+ pdriver = &radeon_pci_driver;
|
|
|
+ driver->driver_features &= ~DRIVER_MODESET;
|
|
|
+ driver->num_ioctls = radeon_max_ioctl;
|
|
|
+#else
|
|
|
+ DRM_ERROR("No UMS support in radeon module!\n");
|
|
|
+ return -EINVAL;
|
|
|
+#endif
|
|
|
}
|
|
|
- /* if the vga console setting is enabled still
|
|
|
- * let modprobe override it */
|
|
|
+
|
|
|
+ /* let modprobe override vga console setting */
|
|
|
return drm_pci_init(driver, pdriver);
|
|
|
}
|
|
|
|