Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cbdded7f authored by Gabriel Krisman Bertazi's avatar Gabriel Krisman Bertazi Committed by Gerd Hoffmann
Browse files

drm: qxl: Embed drm_device into driver structure



This is the recommended way to create the drm_device structure,
according to DRM documentation.

Signed-off-by: default avatarGabriel Krisman Bertazi <krisman@collabora.co.uk>
Link: http://patchwork.freedesktop.org/patch/msgid/20170127010548.27970-4-krisman@collabora.co.uk


Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
parent d74d74ae
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -133,8 +133,8 @@ int qxl_debugfs_add_files(struct qxl_device *qdev,
	qdev->debugfs_count = i;
#if defined(CONFIG_DEBUG_FS)
	drm_debugfs_create_files(files, nfiles,
				 qdev->ddev->primary->debugfs_root,
				 qdev->ddev->primary);
				 qdev->ddev.primary->debugfs_root,
				 qdev->ddev.primary);
#endif
	return 0;
}
@@ -147,7 +147,7 @@ void qxl_debugfs_remove_files(struct qxl_device *qdev)
	for (i = 0; i < qdev->debugfs_count; i++) {
		drm_debugfs_remove_files(qdev->debugfs[i].files,
					 qdev->debugfs[i].num_files,
					 qdev->ddev->primary);
					 qdev->ddev.primary);
	}
#endif
}
+16 −16
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ static int qxl_display_copy_rom_client_monitors_config(struct qxl_device *qdev)

static void qxl_update_offset_props(struct qxl_device *qdev)
{
	struct drm_device *dev = qdev->ddev;
	struct drm_device *dev = &qdev->ddev;
	struct drm_connector *connector;
	struct qxl_output *output;
	struct qxl_head *head;
@@ -156,7 +156,7 @@ static void qxl_update_offset_props(struct qxl_device *qdev)
void qxl_display_read_client_monitors_config(struct qxl_device *qdev)
{

	struct drm_device *dev = qdev->ddev;
	struct drm_device *dev = &qdev->ddev;
	int status;

	status = qxl_display_copy_rom_client_monitors_config(qdev);
@@ -174,10 +174,10 @@ void qxl_display_read_client_monitors_config(struct qxl_device *qdev)
	drm_modeset_lock_all(dev);
	qxl_update_offset_props(qdev);
	drm_modeset_unlock_all(dev);
	if (!drm_helper_hpd_irq_event(qdev->ddev)) {
	if (!drm_helper_hpd_irq_event(dev)) {
		/* notify that the monitor configuration changed, to
		   adjust at the arbitrary resolution */
		drm_kms_helper_hotplug_event(qdev->ddev);
		drm_kms_helper_hotplug_event(dev);
	}
}

@@ -1036,7 +1036,7 @@ static int qxl_mode_create_hotplug_mode_update_property(struct qxl_device *qdev)
		return 0;

	qdev->hotplug_mode_update_property =
		drm_property_create_range(qdev->ddev, DRM_MODE_PROP_IMMUTABLE,
		drm_property_create_range(&qdev->ddev, DRM_MODE_PROP_IMMUTABLE,
					  "hotplug_mode_update", 0, 1);

	return 0;
@@ -1175,28 +1175,28 @@ int qxl_modeset_init(struct qxl_device *qdev)
	int i;
	int ret;

	drm_mode_config_init(qdev->ddev);
	drm_mode_config_init(&qdev->ddev);

	ret = qxl_create_monitors_object(qdev);
	if (ret)
		return ret;

	qdev->ddev->mode_config.funcs = (void *)&qxl_mode_funcs;
	qdev->ddev.mode_config.funcs = (void *)&qxl_mode_funcs;

	/* modes will be validated against the framebuffer size */
	qdev->ddev->mode_config.min_width = 320;
	qdev->ddev->mode_config.min_height = 200;
	qdev->ddev->mode_config.max_width = 8192;
	qdev->ddev->mode_config.max_height = 8192;
	qdev->ddev.mode_config.min_width = 320;
	qdev->ddev.mode_config.min_height = 200;
	qdev->ddev.mode_config.max_width = 8192;
	qdev->ddev.mode_config.max_height = 8192;

	qdev->ddev->mode_config.fb_base = qdev->vram_base;
	qdev->ddev.mode_config.fb_base = qdev->vram_base;

	drm_mode_create_suggested_offset_properties(qdev->ddev);
	drm_mode_create_suggested_offset_properties(&qdev->ddev);
	qxl_mode_create_hotplug_mode_update_property(qdev);

	for (i = 0 ; i < qxl_num_crtc; ++i) {
		qdev_crtc_init(qdev->ddev, i);
		qdev_output_init(qdev->ddev, i);
		qdev_crtc_init(&qdev->ddev, i);
		qdev_output_init(&qdev->ddev, i);
	}

	qdev->mode_info.mode_config_initialized = true;
@@ -1214,7 +1214,7 @@ void qxl_modeset_fini(struct qxl_device *qdev)

	qxl_destroy_monitors_object(qdev);
	if (qdev->mode_info.mode_config_initialized) {
		drm_mode_config_cleanup(qdev->ddev);
		drm_mode_config_cleanup(&qdev->ddev);
		qdev->mode_info.mode_config_initialized = false;
	}
}
+9 −21
Original line number Diff line number Diff line
@@ -62,7 +62,6 @@ static struct pci_driver qxl_pci_driver;
static int
qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
	struct drm_device *drm;
	struct qxl_device *qdev;
	int ret;

@@ -72,29 +71,19 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
		return -EINVAL; /* TODO: ENODEV ? */
	}

	drm = drm_dev_alloc(&qxl_driver, &pdev->dev);
	if (IS_ERR(drm))
		return -ENOMEM;

	qdev = kzalloc(sizeof(struct qxl_device), GFP_KERNEL);
	if (!qdev) {
		ret = -ENOMEM;
		goto free_drm_device;
	}
	if (!qdev)
		return -ENOMEM;

	ret = pci_enable_device(pdev);
	if (ret)
		goto free_drm_device;

	drm->pdev = pdev;
	pci_set_drvdata(pdev, drm);
	drm->dev_private = qdev;
		goto free_dev;

	ret = qxl_device_init(qdev, drm, pdev, ent->driver_data);
	ret = qxl_device_init(qdev, &qxl_driver, pdev, ent->driver_data);
	if (ret)
		goto disable_pci;

	ret = drm_vblank_init(drm, 1);
	ret = drm_vblank_init(&qdev->ddev, 1);
	if (ret)
		goto unload;

@@ -102,10 +91,10 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
	if (ret)
		goto vblank_cleanup;

	drm_kms_helper_poll_init(qdev->ddev);
	drm_kms_helper_poll_init(&qdev->ddev);

	/* Complete initialization. */
	ret = drm_dev_register(drm, ent->driver_data);
	ret = drm_dev_register(&qdev->ddev, ent->driver_data);
	if (ret)
		goto modeset_cleanup;

@@ -114,14 +103,13 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
modeset_cleanup:
	qxl_modeset_fini(qdev);
vblank_cleanup:
	drm_vblank_cleanup(drm);
	drm_vblank_cleanup(&qdev->ddev);
unload:
	qxl_device_fini(qdev);
disable_pci:
	pci_disable_device(pdev);
free_drm_device:
free_dev:
	kfree(qdev);
	kfree(drm);
	return ret;
}

+3 −3
Original line number Diff line number Diff line
@@ -242,7 +242,7 @@ void qxl_debugfs_remove_files(struct qxl_device *qdev);
struct qxl_device;

struct qxl_device {
	struct drm_device		*ddev;
	struct drm_device ddev;
	unsigned long flags;

	resource_size_t vram_base, vram_size;
@@ -334,7 +334,7 @@ __printf(2,3) void qxl_io_log(struct qxl_device *qdev, const char *fmt, ...);
extern const struct drm_ioctl_desc qxl_ioctls[];
extern int qxl_max_ioctl;

int qxl_device_init(struct qxl_device *qdev, struct drm_device *ddev,
int qxl_device_init(struct qxl_device *qdev, struct drm_driver *drv,
		    struct pci_dev *pdev, unsigned long flags);
void qxl_device_fini(struct qxl_device *qdev);

+5 −5
Original line number Diff line number Diff line
@@ -268,7 +268,7 @@ static int qxlfb_create(struct qxl_fbdev *qfbdev,

	info->par = qfbdev;

	qxl_framebuffer_init(qdev->ddev, &qfbdev->qfb, &mode_cmd, gobj,
	qxl_framebuffer_init(&qdev->ddev, &qfbdev->qfb, &mode_cmd, gobj,
			     &qxlfb_fb_funcs);

	fb = &qfbdev->qfb.base;
@@ -297,7 +297,7 @@ static int qxlfb_create(struct qxl_fbdev *qfbdev,
			       sizes->fb_height);

	/* setup aperture base/size for vesafb takeover */
	info->apertures->ranges[0].base = qdev->ddev->mode_config.fb_base;
	info->apertures->ranges[0].base = qdev->ddev.mode_config.fb_base;
	info->apertures->ranges[0].size = qdev->vram_size;

	info->fix.mmio_start = 0;
@@ -395,10 +395,10 @@ int qxl_fbdev_init(struct qxl_device *qdev)
	spin_lock_init(&qfbdev->delayed_ops_lock);
	INIT_LIST_HEAD(&qfbdev->delayed_ops);

	drm_fb_helper_prepare(qdev->ddev, &qfbdev->helper,
	drm_fb_helper_prepare(&qdev->ddev, &qfbdev->helper,
			      &qxl_fb_helper_funcs);

	ret = drm_fb_helper_init(qdev->ddev, &qfbdev->helper,
	ret = drm_fb_helper_init(&qdev->ddev, &qfbdev->helper,
				 qxl_num_crtc,
				 QXLFB_CONN_LIMIT);
	if (ret)
@@ -426,7 +426,7 @@ void qxl_fbdev_fini(struct qxl_device *qdev)
	if (!qdev->mode_info.qfbdev)
		return;

	qxl_fbdev_destroy(qdev->ddev, qdev->mode_info.qfbdev);
	qxl_fbdev_destroy(&qdev->ddev, qdev->mode_info.qfbdev);
	kfree(qdev->mode_info.qfbdev);
	qdev->mode_info.qfbdev = NULL;
}
Loading