Lines Matching full:instance
116 vchiq_blocking_bulk_transfer(struct vchiq_instance *instance, unsigned int handle,
339 struct vchiq_instance *instance = NULL; in vchiq_initialise() local
361 instance = kzalloc(sizeof(*instance), GFP_KERNEL); in vchiq_initialise()
362 if (!instance) { in vchiq_initialise()
367 instance->connected = 0; in vchiq_initialise()
368 instance->state = state; in vchiq_initialise()
369 mutex_init(&instance->bulk_waiter_list_mutex); in vchiq_initialise()
370 INIT_LIST_HEAD(&instance->bulk_waiter_list); in vchiq_initialise()
372 *instance_out = instance; in vchiq_initialise()
377 dev_dbg(state->dev, "core: (%p): returning %d\n", instance, ret); in vchiq_initialise()
383 void free_bulk_waiter(struct vchiq_instance *instance) in free_bulk_waiter() argument
388 &instance->bulk_waiter_list, list) { in free_bulk_waiter()
390 dev_dbg(instance->state->dev, in free_bulk_waiter()
397 int vchiq_shutdown(struct vchiq_instance *instance) in vchiq_shutdown() argument
399 struct vchiq_state *state = instance->state; in vchiq_shutdown()
405 vchiq_shutdown_internal(state, instance); in vchiq_shutdown()
409 dev_dbg(state->dev, "core: (%p): returning %d\n", instance, ret); in vchiq_shutdown()
411 free_bulk_waiter(instance); in vchiq_shutdown()
412 kfree(instance); in vchiq_shutdown()
418 static int vchiq_is_connected(struct vchiq_instance *instance) in vchiq_is_connected() argument
420 return instance->connected; in vchiq_is_connected()
423 int vchiq_connect(struct vchiq_instance *instance) in vchiq_connect() argument
425 struct vchiq_state *state = instance->state; in vchiq_connect()
434 ret = vchiq_connect_internal(state, instance); in vchiq_connect()
437 instance->connected = 1; in vchiq_connect()
442 dev_dbg(state->dev, "core: (%p): returning %d\n", instance, ret); in vchiq_connect()
449 vchiq_add_service(struct vchiq_instance *instance, in vchiq_add_service() argument
453 struct vchiq_state *state = instance->state; in vchiq_add_service()
459 srvstate = vchiq_is_connected(instance) in vchiq_add_service()
463 service = vchiq_add_service_internal(state, params, srvstate, instance, NULL); in vchiq_add_service()
472 dev_dbg(state->dev, "core: (%p): returning %d\n", instance, ret); in vchiq_add_service()
478 vchiq_open_service(struct vchiq_instance *instance, in vchiq_open_service() argument
482 struct vchiq_state *state = instance->state; in vchiq_open_service()
488 if (!vchiq_is_connected(instance)) in vchiq_open_service()
491 service = vchiq_add_service_internal(state, params, VCHIQ_SRVSTATE_OPENING, instance, NULL); in vchiq_open_service()
497 vchiq_remove_service(instance, service->handle); in vchiq_open_service()
503 dev_dbg(state->dev, "core: (%p): returning %d\n", instance, ret); in vchiq_open_service()
510 vchiq_bulk_transmit(struct vchiq_instance *instance, unsigned int handle, const void *data, in vchiq_bulk_transmit() argument
526 ret = vchiq_bulk_xfer_callback(instance, handle, &bulk_params); in vchiq_bulk_transmit()
534 ret = vchiq_blocking_bulk_transfer(instance, handle, &bulk_params); in vchiq_bulk_transmit()
544 int vchiq_bulk_receive(struct vchiq_instance *instance, unsigned int handle, in vchiq_bulk_receive() argument
561 ret = vchiq_bulk_xfer_callback(instance, handle, &bulk_params); in vchiq_bulk_receive()
569 ret = vchiq_blocking_bulk_transfer(instance, handle, &bulk_params); in vchiq_bulk_receive()
580 vchiq_blocking_bulk_transfer(struct vchiq_instance *instance, unsigned int handle, in vchiq_blocking_bulk_transfer() argument
587 service = find_service_by_handle(instance, handle); in vchiq_blocking_bulk_transfer()
593 mutex_lock(&instance->bulk_waiter_list_mutex); in vchiq_blocking_bulk_transfer()
594 list_for_each_entry(iter, &instance->bulk_waiter_list, list) { in vchiq_blocking_bulk_transfer()
601 mutex_unlock(&instance->bulk_waiter_list_mutex); in vchiq_blocking_bulk_transfer()
628 ret = vchiq_bulk_xfer_blocking(instance, handle, bulk_params); in vchiq_blocking_bulk_transfer()
641 mutex_lock(&instance->bulk_waiter_list_mutex); in vchiq_blocking_bulk_transfer()
642 list_add(&waiter->list, &instance->bulk_waiter_list); in vchiq_blocking_bulk_transfer()
643 mutex_unlock(&instance->bulk_waiter_list_mutex); in vchiq_blocking_bulk_transfer()
644 dev_dbg(instance->state->dev, "arm: saved bulk_waiter %p for pid %d\n", in vchiq_blocking_bulk_transfer()
652 add_completion(struct vchiq_instance *instance, enum vchiq_reason reason, in add_completion() argument
657 struct vchiq_drv_mgmt *mgmt = dev_get_drvdata(instance->state->dev); in add_completion()
662 insert = instance->completion_insert; in add_completion()
663 while ((insert - instance->completion_remove) >= MAX_COMPLETIONS) { in add_completion()
666 dev_dbg(instance->state->dev, "core: completion queue full\n"); in add_completion()
668 if (wait_for_completion_interruptible(&instance->remove_event)) { in add_completion()
669 dev_dbg(instance->state->dev, "arm: service_callback interrupted\n"); in add_completion()
671 } else if (instance->closing) { in add_completion()
672 dev_dbg(instance->state->dev, "arm: service_callback closing\n"); in add_completion()
678 completion = &instance->completions[insert & (MAX_COMPLETIONS - 1)]; in add_completion()
693 if (instance->use_close_delivered) in add_completion()
707 instance->completion_insert = insert; in add_completion()
709 complete(&instance->insert_event); in add_completion()
715 service_single_message(struct vchiq_instance *instance, in service_single_message() argument
729 instance->completion_remove) < 0) { in service_single_message()
732 dev_dbg(instance->state->dev, in service_single_message()
734 ret = add_completion(instance, reason, NULL, user_service, in service_single_message()
741 dev_dbg(instance->state->dev, "arm: interrupted\n"); in service_single_message()
743 } else if (instance->closing) { in service_single_message()
744 dev_dbg(instance->state->dev, "arm: closing\n"); in service_single_message()
752 service_callback(struct vchiq_instance *instance, enum vchiq_reason reason, in service_callback() argument
762 struct vchiq_drv_mgmt *mgmt = dev_get_drvdata(instance->state->dev); in service_callback()
772 service = handle_to_service(instance, handle); in service_callback()
780 if (instance->closing) { in service_callback()
793 "arm: service %p(%d,%p), reason %d, header %p, instance %p, cb_data %p, cb_userdata %p\n", in service_callback()
795 reason, header, instance, cb_data, cb_userdata); in service_callback()
807 ret = service_single_message(instance, reason, service, in service_callback()
828 instance->completion_remove) >= 0) || in service_callback()
845 return add_completion(instance, reason, header, user_service, in service_callback()
864 struct vchiq_instance *instance; in vchiq_dump_platform_instances() local
870 instance = service->instance; in vchiq_dump_platform_instances()
871 if (instance) in vchiq_dump_platform_instances()
872 instance->mark = 0; in vchiq_dump_platform_instances()
878 struct vchiq_instance *instance; in vchiq_dump_platform_instances() local
887 instance = service->instance; in vchiq_dump_platform_instances()
888 if (!instance || instance->mark) { in vchiq_dump_platform_instances()
894 seq_printf(f, "Instance %pK: pid %d,%s completions %d/%d\n", in vchiq_dump_platform_instances()
895 instance, instance->pid, in vchiq_dump_platform_instances()
896 instance->connected ? " connected, " : in vchiq_dump_platform_instances()
898 instance->completion_insert - in vchiq_dump_platform_instances()
899 instance->completion_remove, in vchiq_dump_platform_instances()
901 instance->mark = 1; in vchiq_dump_platform_instances()
911 seq_printf(f, " instance %pK", service->instance); in vchiq_dump_platform_service_state()
930 vchiq_keepalive_vchiq_callback(struct vchiq_instance *instance, in vchiq_keepalive_vchiq_callback() argument
936 dev_err(instance->state->dev, "suspend: %s: callback reason %d\n", in vchiq_keepalive_vchiq_callback()
946 struct vchiq_instance *instance; in vchiq_keepalive_thread_func() local
957 ret = vchiq_initialise(state, &instance); in vchiq_keepalive_thread_func()
963 ret = vchiq_connect(instance); in vchiq_keepalive_thread_func()
969 ret = vchiq_add_service(instance, ¶ms, &ka_handle); in vchiq_keepalive_thread_func()
998 ret = vchiq_use_service(instance, ka_handle); in vchiq_keepalive_thread_func()
1005 ret = vchiq_release_service(instance, ka_handle); in vchiq_keepalive_thread_func()
1014 vchiq_shutdown(instance); in vchiq_keepalive_thread_func()
1151 vchiq_instance_get_debugfs_node(struct vchiq_instance *instance) in vchiq_instance_get_debugfs_node() argument
1153 return &instance->debugfs_node; in vchiq_instance_get_debugfs_node()
1157 vchiq_instance_get_use_count(struct vchiq_instance *instance) in vchiq_instance_get_use_count() argument
1164 while ((service = __next_service_by_instance(instance->state, in vchiq_instance_get_use_count()
1165 instance, &i))) in vchiq_instance_get_use_count()
1172 vchiq_instance_get_pid(struct vchiq_instance *instance) in vchiq_instance_get_pid() argument
1174 return instance->pid; in vchiq_instance_get_pid()
1178 vchiq_instance_get_trace(struct vchiq_instance *instance) in vchiq_instance_get_trace() argument
1180 return instance->trace; in vchiq_instance_get_trace()
1184 vchiq_instance_set_trace(struct vchiq_instance *instance, int trace) in vchiq_instance_set_trace() argument
1191 while ((service = __next_service_by_instance(instance->state, in vchiq_instance_set_trace()
1192 instance, &i))) in vchiq_instance_set_trace()
1195 instance->trace = (trace != 0); in vchiq_instance_set_trace()
1199 vchiq_use_service(struct vchiq_instance *instance, unsigned int handle) in vchiq_use_service() argument
1202 struct vchiq_service *service = find_service_by_handle(instance, handle); in vchiq_use_service()
1213 vchiq_release_service(struct vchiq_instance *instance, unsigned int handle) in vchiq_release_service() argument
1216 struct vchiq_service *service = find_service_by_handle(instance, handle); in vchiq_release_service()
1302 dev_warn(state->dev, "suspend: Overall vchiq instance use count %d\n", vc_use_count); in vchiq_dump_service_use_state()