Commit 1472ec67 authored by Gjorgji Rosikopulos's avatar Gjorgji Rosikopulos Committed by Greg Kroah-Hartman

greybus: camera: Use pointer for gb camera module ops

No need to duplicate module ops on every registration.

NOTE: Change should be along merged with:
"msm: camera: Change gb_camera_module ops to pointer"
Signed-off-by: default avatarGjorgji Rosikopulos <grosikopulos@mm-sol.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent a7be8461
...@@ -498,23 +498,30 @@ static int gb_camera_op_capture(void *priv, u32 request_id, ...@@ -498,23 +498,30 @@ static int gb_camera_op_capture(void *priv, u32 request_id,
unsigned int streams, unsigned int num_frames, unsigned int streams, unsigned int num_frames,
size_t settings_size, const void *settings) size_t settings_size, const void *settings)
{ {
return gb_camera_capture(priv, request_id, streams, num_frames, struct gb_camera *gcam = priv;
return gb_camera_capture(gcam, request_id, streams, num_frames,
settings_size, settings); settings_size, settings);
} }
static int gb_camera_op_flush(void *priv, u32 *request_id) static int gb_camera_op_flush(void *priv, u32 *request_id)
{ {
return gb_camera_flush(priv, request_id); struct gb_camera *gcam = priv;
return gb_camera_flush(gcam, request_id);
} }
static const struct gb_camera_ops gb_cam_ops = {
.capabilities = gb_camera_op_capabilities,
.configure_streams = gb_camera_op_configure_streams,
.capture = gb_camera_op_capture,
.flush = gb_camera_op_flush,
};
static int gb_camera_register_intf_ops(struct gb_camera *gcam) static int gb_camera_register_intf_ops(struct gb_camera *gcam)
{ {
gcam->module.priv = gcam; gcam->module.priv = gcam;
gcam->module.ops.capabilities = gb_camera_op_capabilities; gcam->module.ops = &gb_cam_ops;
gcam->module.ops.configure_streams = gb_camera_op_configure_streams;
gcam->module.ops.capture = gb_camera_op_capture;
gcam->module.ops.flush = gb_camera_op_flush;
return gb_camera_register(&gcam->module); return gb_camera_register(&gcam->module);
} }
......
...@@ -36,14 +36,14 @@ struct gb_camera_ops { ...@@ -36,14 +36,14 @@ struct gb_camera_ops {
struct gb_camera_module { struct gb_camera_module {
void *priv; void *priv;
struct gb_camera_ops ops; const struct gb_camera_ops *ops;
struct list_head list; /* Global list */ struct list_head list; /* Global list */
}; };
#define gb_camera_call(f, op, args...) \ #define gb_camera_call(f, op, args...) \
((!(f) ? -ENODEV : ((f)->ops.op) ? \ (!(f) ? -ENODEV : (((f)->ops->op) ? \
(f)->ops.op((f)->priv, ##args) : -ENOIOCTLCMD)) (f)->ops->op((f)->priv, ##args) : -ENOIOCTLCMD))
int gb_camera_register(struct gb_camera_module *module); int gb_camera_register(struct gb_camera_module *module);
int gb_camera_unregister(struct gb_camera_module *module); int gb_camera_unregister(struct gb_camera_module *module);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment