Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+14 −7
Original line number Diff line number Diff line
@@ -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);
}

+3 −3
Original line number Diff line number Diff line
@@ -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);