summaryrefslogtreecommitdiff
path: root/include/video
diff options
context:
space:
mode:
authorGreg Hackmann <ghackmann@google.com>2014-03-24 16:45:43 -0700
committerGreg Hackmann <ghackmann@google.com>2014-03-24 17:43:12 -0700
commite42126fcf1525129f25c895d26ddd868e5d4dff9 (patch)
tree965d160d364ffcc156ac396f7c96e4098d8ba9ff /include/video
parente8cec2c1f77a8a90f701fd2cebdea4feba7640bf (diff)
video: adf: replace fbdev helper's open flag with refcount
A device's fb_info is shared between clients. fb_release() is called when each client is released, not just the last one. Since the fbdev helper needs to release its dma-buf when the last client goes away, it must keep its own reference count. fbmem and fbcon hold different locks while calling fb_release(), so explicit locking is needed. Change-Id: I42cd659f7633adba7c11f407d4b594bd43305d6a Signed-off-by: Greg Hackmann <ghackmann@google.com>
Diffstat (limited to 'include/video')
-rw-r--r--include/video/adf_fbdev.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/video/adf_fbdev.h b/include/video/adf_fbdev.h
index 9c349144b5cd..e4d6fb7b25df 100644
--- a/include/video/adf_fbdev.h
+++ b/include/video/adf_fbdev.h
@@ -16,6 +16,7 @@
#define _VIDEO_ADF_FBDEV_H_
#include <linux/fb.h>
+#include <linux/mutex.h>
#include <video/adf.h>
struct adf_fbdev {
@@ -24,7 +25,8 @@ struct adf_fbdev {
struct fb_info *info;
u32 pseudo_palette[16];
- bool open;
+ unsigned int refcount;
+ struct mutex refcount_lock;
struct dma_buf *dma_buf;
u32 offset;