コード例 #1
0
ファイル: oem_rapi_client.c プロジェクト: arjen75/L3_kernel2
static int oem_rapi_client_streaming_function_arg(struct msm_rpc_client *client,
						  struct msm_rpc_xdr *xdr,
						  void *data)
{
	int cb_id;
	struct oem_rapi_client_streaming_func_arg *arg = data;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if ((cb_id < 0) && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	xdr_send_uint32(xdr, &arg->event);                /* enum */
	xdr_send_uint32(xdr, &cb_id);                     /* cb_id */
	xdr_send_uint32(xdr, (uint32_t *)(&arg->handle)); /* handle */
	xdr_send_uint32(xdr, &arg->in_len);               /* in_len */
	xdr_send_bytes(xdr, (const void **)&arg->input,
			     &arg->in_len);                     /* input */
	xdr_send_uint32(xdr, &arg->out_len_valid);        /* out_len */
	xdr_send_uint32(xdr, &arg->output_valid);         /* output */

	/* output_size */
	if (arg->output_valid)
		xdr_send_uint32(xdr, &arg->output_size);

	return 0;
}
コード例 #2
0
static int ping_mdm_data_cb_register_arg(struct msm_rpc_client *client,
					 void *buf, void *data)
{
	struct ping_mdm_register_data_cb_arg *arg;
	int cb_id, size = 0;

	arg = (struct ping_mdm_register_data_cb_arg *)data;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if ((cb_id < 0) && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	*((uint32_t *)buf) = cpu_to_be32((uint32_t)cb_id);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	*((uint32_t *)buf) = cpu_to_be32(arg->num);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	*((uint32_t *)buf) = cpu_to_be32(arg->size);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	*((uint32_t *)buf) = cpu_to_be32(arg->interval_ms);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	*((uint32_t *)buf) = cpu_to_be32(arg->num_tasks);
	size += sizeof(uint32_t);

	return size;
}
コード例 #3
0
static int oem_rapi_client_streaming_function_arg(struct msm_rpc_client *client,
						  void *buf, void *data)
{
	int size = 0;
	int cb_id;
	struct oem_rapi_client_streaming_func_arg *arg = data;

	/* enum */
	*((uint32_t *)buf) = cpu_to_be32(arg->event);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	/* cb_id */
	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if ((cb_id < 0) && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;
	*((uint32_t *)buf) = cpu_to_be32((uint32_t)cb_id);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	/* handle */
	*((uint32_t *)buf) = cpu_to_be32((uint32_t)arg->handle);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	/* in_len */
	*((uint32_t *)buf) = cpu_to_be32(arg->in_len);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	/* input */
	*((uint32_t *)buf) = cpu_to_be32(arg->in_len);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);
	memcpy(buf, arg->input, arg->in_len);
	size += arg->in_len;
	buf += arg->in_len;
	if (arg->in_len & 0x3) {
		memset(buf, 0, 4 - (arg->in_len & 0x3));
		buf += 4 - (arg->in_len & 0x3);
		size += 4 - (arg->in_len & 0x3);
	}

	/* out_len */
	*((uint32_t *)buf) = cpu_to_be32((uint32_t)(arg->out_len_valid));
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	/* output */
	*((uint32_t *)buf) = cpu_to_be32((uint32_t)(arg->output_valid));
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);
	if (arg->output_valid) {
		*((uint32_t *)buf) = cpu_to_be32(arg->output_size);
		size += sizeof(uint32_t);
		buf += sizeof(uint32_t);
	}

	return size;
}
コード例 #4
0
int msm_pm_app_register_vbus_sn(void (*callback)(int online))
{
	uint32_t cb_id = msm_rpc_add_cb_func(client, (void *)callback);

	/* In case of NULL callback funtion, cb_id would be -1 */
	if ((int) cb_id < -1)
		return cb_id;

	return msm_rpc_client_req(client,
			rpc_ids.reg_for_vbus_valid,
			vbus_sess_valid_arg_cb,
			&cb_id, NULL, NULL, -1);

}
コード例 #5
0
static int ping_mdm_unregister_arg(struct msm_rpc_client *client,
				   struct msm_rpc_xdr *xdr, void *data)
{
	struct ping_mdm_unregister_arg *arg = data;
	int cb_id;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if ((cb_id < 0) && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	xdr_send_uint32(xdr, &cb_id);             /* cb_id */

	return 0;
}
コード例 #6
0
static int ping_mdm_unregister_arg(struct msm_rpc_client *client,
				   void *buf, void *data)
{
	struct ping_mdm_unregister_arg *arg;
	int cb_id;

	arg = (struct ping_mdm_unregister_arg *)data;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if ((cb_id < 0) && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	*((uint32_t *)buf) = cpu_to_be32((uint32_t)cb_id);

	return sizeof(uint32_t);
}
コード例 #7
0
static int dog_keepalive_register_arg_func(struct msm_rpc_client *client,
					   struct msm_rpc_xdr *xdr, void *data)
{
	struct dog_keepalive_register_arg *arg = data;
	int cb_id;

	
	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if ((cb_id < 0) && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	xdr_send_uint32(xdr, &cb_id);
	xdr_send_uint32(xdr, &arg->response_msec);    
	xdr_send_uint32(xdr, &arg->clnt_id_valid);    
	return 0;
}
コード例 #8
0
ファイル: rpc_pmapp.c プロジェクト: CL0SeY/i957kernel
int msm_pm_app_rpc_init(void (*callback)(int online))
{
	uint32_t cb_id, rc;

	if (!machine_is_qsd8x50_ffa() && !machine_is_qsd8x50a_ffa()
			&& !machine_is_msm7x27_ffa())
		return -ENOTSUPP;

	client = msm_rpc_register_client("pmapp_usb",
			PMAPP_RPC_PROG,
			PMAPP_RPC_VER_2_1, 1,
			pm_app_usb_cb_func);
	if (!IS_ERR(client)) {
		rpc_pmapp_init_rpc_ids(PMAPP_RPC_VER_2_1);
		goto done;
	}

	client = msm_rpc_register_client("pmapp_usb",
			PMAPP_RPC_PROG,
			PMAPP_RPC_VER_1_2, 1,
			pm_app_usb_cb_func);
	if (!IS_ERR(client)) {
		rpc_pmapp_init_rpc_ids(PMAPP_RPC_VER_1_2);
		goto done;
	}

	client = msm_rpc_register_client("pmapp_usb",
			PMAPP_RPC_PROG,
			PMAPP_RPC_VER_1_1, 1,
			pm_app_usb_cb_func);
	if (!IS_ERR(client))
		rpc_pmapp_init_rpc_ids(PMAPP_RPC_VER_1_1);
	else
		return PTR_ERR(client);

done:
	cb_id = msm_rpc_add_cb_func(client, (void *)callback);
	/* In case of NULL callback funtion, cb_id would be -1 */
	if ((int) cb_id < -1)
		return cb_id;
	rc =  msm_rpc_client_req(client,
		rpc_ids.reg_for_vbus_valid,
			vbus_sess_valid_arg_cb,
				&cb_id, NULL, NULL, -1);
	return rc;
}
コード例 #9
0
static int npa_remote_init_arg_fn(struct msm_rpc_client *client,
		struct msm_rpc_xdr *xdr, void *data)
{
	struct npa_remote_init_arg *arg = data;
	unsigned int cb_id = 0;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->callback);
	if (cb_id < 0 && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	xdr_send_uint32(xdr, &arg->major);
	xdr_send_uint32(xdr, &arg->minor);
	xdr_send_uint32(xdr, &arg->build);
	xdr_send_uint32(xdr, &cb_id);
	xdr_send_uint32(xdr, &arg->context);

	return 0;
}
コード例 #10
0
static int ping_mdm_data_cb_register_arg(struct msm_rpc_client *client,
					 struct msm_rpc_xdr *xdr, void *data)
{
	struct ping_mdm_register_data_cb_arg *arg = data;
	int cb_id;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if ((cb_id < 0) && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	xdr_send_uint32(xdr, &cb_id);                /* cb_id */
	xdr_send_uint32(xdr, &arg->num);             /* num */
	xdr_send_uint32(xdr, &arg->size);            /* size */
	xdr_send_uint32(xdr, &arg->interval_ms);     /* interval_ms */
	xdr_send_uint32(xdr, &arg->num_tasks);       /* num_tasks */

	return 0;
}
コード例 #11
0
static int ping_mdm_register_arg(struct msm_rpc_client *client,
				 void *buf, void *data)
{
	struct ping_mdm_register_arg *arg;
	int cb_id, size = 0;

	arg = (struct ping_mdm_register_arg *)data;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->cb_func);
	if (cb_id < 0)
		return cb_id;

	*((uint32_t *)buf) = cpu_to_be32((uint32_t)cb_id);
	size += sizeof(uint32_t);
	buf += sizeof(uint32_t);

	*((int32_t *)buf) = cpu_to_be32(arg->num);
	size += sizeof(uint32_t);

	return size;
}
コード例 #12
0
static int npa_remote_resource_available_arg_fn(struct msm_rpc_client *client,
		struct msm_rpc_xdr *xdr, void *data)
{
	struct npa_remote_resource_available_arg *arg = data;
	unsigned int cb_id = 0;
	int len = 0;

	cb_id = msm_rpc_add_cb_func(client, (void *)arg->callback);
	if (cb_id < 0 && (cb_id != MSM_RPC_CLIENT_NULL_CB_ID))
		return cb_id;

	if (arg->resource_name) {
		len = strlen(arg->resource_name) + 1;
		xdr_send_bytes(xdr, (const void **)&arg->resource_name, &len);
	} else {
		xdr_send_uint32(xdr, &len);
	}
	xdr_send_uint32(xdr, &cb_id);
	xdr_send_uint32(xdr, &arg->context);

	return 0;
}