summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/host1x/drm/drm.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2013-07-08 13:40:34 +1000
committerBen Skeggs <bskeggs@redhat.com>2013-07-08 13:40:34 +1000
commit06d5a24f08831e167fae42a64ef2083a89f8e617 (patch)
tree509ef5096fcf1b32029b912afba9a2c1ce9067d9 /drivers/gpu/host1x/drm/drm.c
parentd2989b534ef6834ebf2425aecc040b894b567c91 (diff)
parent7c6ca3040e9ac174e6d2189811da603e9c19a150 (diff)
downloadblackbird-obmc-linux-06d5a24f08831e167fae42a64ef2083a89f8e617.tar.gz
blackbird-obmc-linux-06d5a24f08831e167fae42a64ef2083a89f8e617.zip
Merge remote-tracking branch 'airlied/drm-next' into drm-nouveau-next
Diffstat (limited to 'drivers/gpu/host1x/drm/drm.c')
-rw-r--r--drivers/gpu/host1x/drm/drm.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/gpu/host1x/drm/drm.c b/drivers/gpu/host1x/drm/drm.c
index 2b561c9118c6..e184b00faacd 100644
--- a/drivers/gpu/host1x/drm/drm.c
+++ b/drivers/gpu/host1x/drm/drm.c
@@ -148,6 +148,7 @@ int host1x_drm_init(struct host1x_drm *host1x, struct drm_device *drm)
dev_err(host1x->dev,
"DRM setup failed for %s: %d\n",
dev_name(client->dev), err);
+ mutex_unlock(&host1x->clients_lock);
return err;
}
}
@@ -175,6 +176,7 @@ int host1x_drm_exit(struct host1x_drm *host1x)
dev_err(host1x->dev,
"DRM cleanup failed for %s: %d\n",
dev_name(client->dev), err);
+ mutex_unlock(&host1x->clients_lock);
return err;
}
}
@@ -257,6 +259,13 @@ static int tegra_drm_load(struct drm_device *drm, unsigned long flags)
if (err < 0)
return err;
+ /*
+ * We don't use the drm_irq_install() helpers provided by the DRM
+ * core, so we need to set this manually in order to allow the
+ * DRM_IOCTL_WAIT_VBLANK to operate correctly.
+ */
+ drm->irq_enabled = 1;
+
err = drm_vblank_init(drm, drm->mode_config.num_crtc);
if (err < 0)
return err;
@@ -378,8 +387,7 @@ static int tegra_syncpt_incr(struct drm_device *drm, void *data,
if (!sp)
return -EINVAL;
- host1x_syncpt_incr(sp);
- return 0;
+ return host1x_syncpt_incr(sp);
}
static int tegra_syncpt_wait(struct drm_device *drm, void *data,
@@ -605,7 +613,7 @@ static void tegra_debugfs_cleanup(struct drm_minor *minor)
#endif
struct drm_driver tegra_drm_driver = {
- .driver_features = DRIVER_BUS_PLATFORM | DRIVER_MODESET | DRIVER_GEM,
+ .driver_features = DRIVER_MODESET | DRIVER_GEM,
.load = tegra_drm_load,
.unload = tegra_drm_unload,
.open = tegra_drm_open,
OpenPOWER on IntegriCloud