From 1472ec67f734d9707d4758fddd4787113fe0b0b2 Mon Sep 17 00:00:00 2001 From: Gjorgji Rosikopulos Date: Thu, 31 Mar 2016 14:12:45 +0300 Subject: [PATCH] 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: Gjorgji Rosikopulos Reviewed-by: Laurent Pinchart Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/camera.c | 21 ++++++++++++++------- drivers/staging/greybus/gb-camera.h | 6 +++--- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/staging/greybus/camera.c b/drivers/staging/greybus/camera.c index a871b0f33733..2de91d59a54e 100644 --- a/drivers/staging/greybus/camera.c +++ b/drivers/staging/greybus/camera.c @@ -498,23 +498,30 @@ static int gb_camera_op_capture(void *priv, u32 request_id, unsigned int streams, unsigned int num_frames, 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); } 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) { gcam->module.priv = gcam; - gcam->module.ops.capabilities = gb_camera_op_capabilities; - 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; - + gcam->module.ops = &gb_cam_ops; return gb_camera_register(&gcam->module); } diff --git a/drivers/staging/greybus/gb-camera.h b/drivers/staging/greybus/gb-camera.h index 0a48a16b675e..273b4fa6dd4f 100644 --- a/drivers/staging/greybus/gb-camera.h +++ b/drivers/staging/greybus/gb-camera.h @@ -36,14 +36,14 @@ struct gb_camera_ops { struct gb_camera_module { void *priv; - struct gb_camera_ops ops; + const struct gb_camera_ops *ops; struct list_head list; /* Global list */ }; #define gb_camera_call(f, op, args...) \ - ((!(f) ? -ENODEV : ((f)->ops.op) ? \ - (f)->ops.op((f)->priv, ##args) : -ENOIOCTLCMD)) + (!(f) ? -ENODEV : (((f)->ops->op) ? \ + (f)->ops->op((f)->priv, ##args) : -ENOIOCTLCMD)) int gb_camera_register(struct gb_camera_module *module); int gb_camera_unregister(struct gb_camera_module *module); -- 2.20.1