summaryrefslogtreecommitdiff
path: root/drivers/staging/greybus/gb-camera.h
diff options
context:
space:
mode:
authorGjorgji Rosikopulos <grosikopulos@mm-sol.com>2016-01-13 21:52:37 +0200
committerGreg Kroah-Hartman <gregkh@google.com>2016-01-13 15:29:59 -0800
commitfc0ddf5adbc2636365b1f8c3c21cd3adf0a8c252 (patch)
tree2cd709f9be22d799b9eb84770ccbb298289870a7 /drivers/staging/greybus/gb-camera.h
parent9c06c6a2b9ec4cfa78a4cf5ab123bfca0285e083 (diff)
greybus: camera: HACK: Export GB camera interface
Gb camera need to communicate with HOST driver. as temporary solution there will be shared header between gb camera HOST camera. Both need to be in sync since gb drivers are compiled out of the kernel tree. Gb camera register camera operation functions when is created. Currently unregister is not supported. Signed-off-by: Gjorgji Rosikopulos <grosikopulos@mm-sol.com> Acked-by: Laurent Pinchart <laurent.pinchart@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus/gb-camera.h')
-rw-r--r--drivers/staging/greybus/gb-camera.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/drivers/staging/greybus/gb-camera.h b/drivers/staging/greybus/gb-camera.h
new file mode 100644
index 000000000000..a1824740ef83
--- /dev/null
+++ b/drivers/staging/greybus/gb-camera.h
@@ -0,0 +1,37 @@
+/*
+ * Greybus Camera protocol driver.
+ *
+ * Copyright 2015 Google Inc.
+ *
+ * Released under the GPLv2 only.
+ */
+#ifndef __GB_CAMERA_H
+#define __GB_CAMERA_H
+
+#include <linux/v4l2-mediabus.h>
+
+struct gb_camera_stream {
+ unsigned int width;
+ unsigned int height;
+ enum v4l2_mbus_pixelcode pixel_code;
+ unsigned int vc;
+ unsigned int dt[2];
+ unsigned int max_size;
+};
+
+struct gb_camera_ops {
+ ssize_t (*capabilities)(void *priv, char *buf, size_t len);
+ int (*configure_streams)(void *priv, unsigned int nstreams,
+ struct gb_camera_stream *streams);
+ int (*capture)(void *priv, u32 request_id,
+ unsigned int streams, unsigned int num_frames,
+ size_t settings_size, const void *settings);
+ int (*flush)(void *priv, u32 *request_id);
+};
+
+#define gb_camera_call(f, p, op, args...) \
+ (((f)->op) ? (f)->op(p, ##args) : -ENOIOCTLCMD)
+
+int gb_camera_register(struct gb_camera_ops *ops, void *priv);
+
+#endif /* __GB_CAMERA_H */