Lines Matching refs:wait_data
412 struct cdx_mcdi_blocking_data *wait_data = in cdx_mcdi_rpc_completer() local
415 wait_data->rc = rc; in cdx_mcdi_rpc_completer()
416 memcpy(wait_data->outbuf, outbuf, in cdx_mcdi_rpc_completer()
417 min(outlen_actual, wait_data->outlen)); in cdx_mcdi_rpc_completer()
418 wait_data->outlen_actual = outlen_actual; in cdx_mcdi_rpc_completer()
421 wait_data->done = true; in cdx_mcdi_rpc_completer()
422 wake_up(&wait_data->wq); in cdx_mcdi_rpc_completer()
423 kref_put(&wait_data->ref, cdx_mcdi_blocking_data_release); in cdx_mcdi_rpc_completer()
431 struct cdx_mcdi_blocking_data *wait_data; in cdx_mcdi_rpc_sync() local
439 wait_data = kmalloc(sizeof(*wait_data), GFP_KERNEL); in cdx_mcdi_rpc_sync()
440 if (!wait_data) in cdx_mcdi_rpc_sync()
445 kfree(wait_data); in cdx_mcdi_rpc_sync()
449 kref_init(&wait_data->ref); in cdx_mcdi_rpc_sync()
450 wait_data->done = false; in cdx_mcdi_rpc_sync()
451 init_waitqueue_head(&wait_data->wq); in cdx_mcdi_rpc_sync()
452 wait_data->outbuf = outbuf; in cdx_mcdi_rpc_sync()
453 wait_data->outlen = outlen; in cdx_mcdi_rpc_sync()
457 cmd_item->cookie = (unsigned long)wait_data; in cdx_mcdi_rpc_sync()
464 kref_get(&wait_data->ref); in cdx_mcdi_rpc_sync()
467 kref_put(&wait_data->ref, cdx_mcdi_blocking_data_release); in cdx_mcdi_rpc_sync()
471 if (!wait_event_timeout(wait_data->wq, wait_data->done, in cdx_mcdi_rpc_sync()
473 !wait_data->done) { in cdx_mcdi_rpc_sync()
479 wait_data->rc = -ETIMEDOUT; in cdx_mcdi_rpc_sync()
480 wait_data->outlen_actual = 0; in cdx_mcdi_rpc_sync()
484 *outlen_actual = wait_data->outlen_actual; in cdx_mcdi_rpc_sync()
485 rc = wait_data->rc; in cdx_mcdi_rpc_sync()
488 kref_put(&wait_data->ref, cdx_mcdi_blocking_data_release); in cdx_mcdi_rpc_sync()