struct host1x_device_info info;
struct kobject *caps_kobj;
struct nvhost_capability_node *caps_nodes;
+ struct mutex timeout_mutex;
};
extern struct nvhost_master *nvhost;
sp = &dev->syncpt;
ch = cdma_to_channel(cdma);
+ mutex_lock(&dev->timeout_mutex);
+
ret = mutex_trylock(&cdma->lock);
if (!ret) {
schedule_delayed_work(&cdma->timeout.wq, msecs_to_jiffies(10));
+ mutex_unlock(&dev->timeout_mutex);
return;
}
schedule_delayed_work(&cdma->timeout.wq,
msecs_to_jiffies(cdma->timeout.timeout));
mutex_unlock(&cdma->lock);
+ mutex_unlock(&dev->timeout_mutex);
return;
}
dev_dbg(&dev->dev->dev,
"cdma_timeout: expired, but has no clientid\n");
mutex_unlock(&cdma->lock);
+ mutex_unlock(&dev->timeout_mutex);
return;
}
writel(cmdproc_stop,
dev->sync_aperture + host1x_sync_cmdproc_stop_r());
mutex_unlock(&cdma->lock);
+ mutex_unlock(&dev->timeout_mutex);
return;
}
nvhost_cdma_update_sync_queue(cdma, sp, ch->dev);
mutex_unlock(&cdma->lock);
+ mutex_unlock(&dev->timeout_mutex);
}
static const struct nvhost_cdma_ops host1x_cdma_ops = {