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

Commit 16c5dcde authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: synx: provide function to enable external signaling"

parents 0986271e 3c6ef89f
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -217,7 +217,7 @@ int synx_deregister_callback(s32 synx_obj,

int synx_signal(s32 synx_obj, u32 status)
{
	int rc;
	int rc, ret;
	u32 i = 0;
	u32 idx = 0;
	u32 type;
@@ -321,11 +321,25 @@ int synx_signal(s32 synx_obj, u32 status)
			 * we are already signaled, so don't want to
			 * recursively be signaled
			 */
			bind_ops->deregister_callback(synx_external_callback,
				data, sync_id);
			ret = bind_ops->deregister_callback(
					synx_external_callback, data, sync_id);
			if (ret < 0)
				pr_err("de-registration fail on sync: %d, err: %d\n",
					sync_id, ret);
			pr_debug("signaling external sync: %d, status: %u\n",
				sync_id, status);
			bind_ops->signal(sync_id, status);
			/* optional function to enable external signaling */
			if (bind_ops->enable_signaling)
				ret = bind_ops->enable_signaling(sync_id);
				if (ret < 0) {
					pr_err("enable signaling fail on sync: %d, err: %d\n",
						sync_id, ret);
					continue;
				}
			ret = bind_ops->signal(sync_id, status);
			if (ret < 0)
				pr_err("signaling fail on sync: %d, err: %d\n",
					sync_id, ret);
		} else {
			pr_warn("unimplemented external type: %u\n", type);
		}
@@ -1373,6 +1387,7 @@ static void synx_bind_ops_csl_type(struct bind_operations *vtbl)

	vtbl->register_callback = cam_sync_register_callback;
	vtbl->deregister_callback = cam_sync_deregister_callback;
	vtbl->enable_signaling = cam_sync_get_obj_ref;
	vtbl->signal = cam_sync_signal;

	pr_debug("csl bind functionality set\n");
+3 −0
Original line number Diff line number Diff line
@@ -129,6 +129,8 @@ struct synx_table_row {
 *
 * @register_callback   : Function to register with external sync object
 * @deregister_callback : Function to deregister with external sync object
 * @enable_signaling    : Function to enable the signaling on the external
 *                        sync object (optional)
 * @signal              : Function to signal the external sync object
 */
struct bind_operations {
@@ -136,6 +138,7 @@ struct bind_operations {
		void *userdata, s32 sync_obj);
	int (*deregister_callback)(synx_callback cb_func,
		void *userdata, s32 sync_obj);
	int (*enable_signaling)(s32 sync_obj);
	int (*signal)(s32 sync_obj, u32 status);
};