43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
/*
|
|
* 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>
|
|
|
|
/* Input flags need to be set from the caller */
|
|
#define GB_CAMERA_IN_FLAG_TEST (1 << 0)
|
|
/* Output flags returned */
|
|
#define GB_CAMERA_OUT_FLAG_ADJUSTED (1 << 0)
|
|
|
|
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,
|
|
unsigned int *flags, 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 */
|