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

Commit 83cc2e69 authored by Shubham Talekar's avatar Shubham Talekar Committed by Gerrit - the friendly Code Review server
Browse files

drm: include function pointer for vmap



This is the last change in the set of drm_client_modeset
log file. This change is included on top of the dependent changes
to resolve validation issue.
1. Include function pointer for vmap.
2. Remove vmap function in buffer creation.
3. Add file alloc func in open helper.

Change-Id: Id7a7b5d2e987130ce7d7b178a49db19e5eb93b46
Signed-off-by: default avatarShubham Talekar <stalek@codeaurora.org>
parent 522965ef
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@ static void drm_client_close(struct drm_client_dev *client)

	drm_file_free(client->file);
}
EXPORT_SYMBOL(drm_client_close);

/**
 * drm_client_init - Initialise a DRM client
@@ -176,6 +175,7 @@ void drm_client_dev_unregister(struct drm_device *dev)
	}
	mutex_unlock(&dev->clientlist_mutex);
}
EXPORT_SYMBOL(drm_client_dev_unregister);

/**
 * drm_client_dev_hotplug - Send hotplug event to clients
@@ -249,7 +249,6 @@ drm_client_buffer_create(struct drm_client_dev *client, u32 width, u32 height, u
	struct drm_device *dev = client->dev;
	struct drm_client_buffer *buffer;
	struct drm_gem_object *obj;
	void *vaddr;
	int ret;

	buffer = kzalloc(sizeof(*buffer), GFP_KERNEL);
@@ -276,12 +275,6 @@ drm_client_buffer_create(struct drm_client_dev *client, u32 width, u32 height, u

	buffer->gem = obj;

	vaddr = drm_client_buffer_vmap(buffer);
	if (IS_ERR(vaddr)) {
		ret = PTR_ERR(vaddr);
		goto err_delete;
	}

	return buffer;

err_delete:
@@ -313,6 +306,9 @@ void *drm_client_buffer_vmap(struct drm_client_buffer *buffer)
	if (buffer->vaddr)
		return buffer->vaddr;

	if (!dev->driver->gem_prime_vmap)
		return ERR_PTR(-ENOTSUPP);

	/*
	 * FIXME: The dependency on GEM here isn't required, we could
	 * convert the driver handle to a dma-buf instead and use the
@@ -343,6 +339,7 @@ void drm_client_buffer_vunmap(struct drm_client_buffer *buffer)
{
	struct drm_device *dev = buffer->client->dev;

	if (buffer->vaddr && dev->driver->gem_prime_vunmap)
		dev->driver->gem_prime_vunmap(buffer->gem, buffer->vaddr);
	buffer->vaddr = NULL;
}
+1 −1
Original line number Diff line number Diff line
@@ -298,7 +298,7 @@ int drm_mode_connector_attach_encoder(struct drm_connector *connector,
	if (WARN_ON(connector->encoder))
		return -EINVAL;

	for (i = 0; i < ARRAY_SIZE(connector->encoder_ids); i++) {
	for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
		if (connector->encoder_ids[i] == 0) {
			connector->encoder_ids[i] = encoder->base.id;
			return 0;
+0 −2
Original line number Diff line number Diff line
@@ -758,8 +758,6 @@ void drm_dev_unregister(struct drm_device *dev)

	dev->registered = false;

	drm_client_dev_unregister(dev);

	if (drm_core_check_feature(dev, DRIVER_MODESET))
		drm_modeset_unregister_all(dev);

+4 −0
Original line number Diff line number Diff line
@@ -353,6 +353,10 @@ static int drm_open_helper(struct file *filp, struct drm_minor *minor)

	DRM_DEBUG("pid = %d, minor = %d\n", task_pid_nr(current), minor->index);

	priv = drm_file_alloc(minor);
	if (IS_ERR(priv))
		return PTR_ERR(priv);

	if (drm_is_primary_client(priv)) {
		ret = drm_master_open(priv);
		if (ret) {
+1 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ struct drm_client_dev {
int drm_client_init(struct drm_device *dev, struct drm_client_dev *client,
		   const char *name, const struct drm_client_funcs *funcs);
void drm_client_register(struct drm_client_dev *client);
void drm_client_release(struct drm_client_dev *client);

void drm_client_dev_unregister(struct drm_device *dev);
void drm_client_dev_hotplug(struct drm_device *dev);
Loading