mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-29 17:35:36 -04:00
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 <grosikopulos@mm-sol.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a7be84613a
commit
1472ec67f7
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user