Lines Matching refs:handler
487 struct fw_address_handler *handler; in lookup_overlapping_address_handler() local
489 list_for_each_entry_rcu(handler, list, link) { in lookup_overlapping_address_handler()
490 if (handler->offset < offset + length && in lookup_overlapping_address_handler()
491 offset < handler->offset + handler->length) in lookup_overlapping_address_handler()
492 return handler; in lookup_overlapping_address_handler()
498 static bool is_enclosing_handler(struct fw_address_handler *handler, in is_enclosing_handler() argument
501 return handler->offset <= offset && in is_enclosing_handler()
502 offset + length <= handler->offset + handler->length; in is_enclosing_handler()
508 struct fw_address_handler *handler; in lookup_enclosing_address_handler() local
510 list_for_each_entry_rcu(handler, list, link) { in lookup_enclosing_address_handler()
511 if (is_enclosing_handler(handler, offset, length)) in lookup_enclosing_address_handler()
512 return handler; in lookup_enclosing_address_handler()
563 int fw_core_add_address_handler(struct fw_address_handler *handler, in fw_core_add_address_handler() argument
572 handler->length & 3 || in fw_core_add_address_handler()
573 handler->length == 0) in fw_core_add_address_handler()
578 handler->offset = region->start; in fw_core_add_address_handler()
579 while (handler->offset + handler->length <= region->end) { in fw_core_add_address_handler()
580 if (is_in_fcp_region(handler->offset, handler->length)) in fw_core_add_address_handler()
585 handler->offset, handler->length); in fw_core_add_address_handler()
587 handler->offset += other->length; in fw_core_add_address_handler()
589 list_add_tail_rcu(&handler->link, &address_handler_list); in fw_core_add_address_handler()
610 void fw_core_remove_address_handler(struct fw_address_handler *handler) in fw_core_remove_address_handler() argument
613 list_del_rcu(&handler->link); in fw_core_remove_address_handler()
841 struct fw_address_handler *handler; in handle_exclusive_region_request() local
851 handler = lookup_enclosing_address_handler(&address_handler_list, in handle_exclusive_region_request()
853 if (handler) in handle_exclusive_region_request()
854 handler->address_callback(card, request, in handle_exclusive_region_request()
858 handler->callback_data); in handle_exclusive_region_request()
861 if (!handler) in handle_exclusive_region_request()
870 struct fw_address_handler *handler; in handle_fcp_region_request() local
893 list_for_each_entry_rcu(handler, &address_handler_list, link) { in handle_fcp_region_request()
894 if (is_enclosing_handler(handler, offset, request->length)) in handle_fcp_region_request()
895 handler->address_callback(card, NULL, tcode, in handle_fcp_region_request()
900 handler->callback_data); in handle_fcp_region_request()