1331766Sken/*- 2331766Sken * Copyright (c) 2017 Broadcom. All rights reserved. 3331766Sken * The term "Broadcom" refers to Broadcom Limited and/or its subsidiaries. 4331766Sken * 5331766Sken * Redistribution and use in source and binary forms, with or without 6331766Sken * modification, are permitted provided that the following conditions are met: 7331766Sken * 8331766Sken * 1. Redistributions of source code must retain the above copyright notice, 9331766Sken * this list of conditions and the following disclaimer. 10331766Sken * 11331766Sken * 2. Redistributions in binary form must reproduce the above copyright notice, 12331766Sken * this list of conditions and the following disclaimer in the documentation 13331766Sken * and/or other materials provided with the distribution. 14331766Sken * 15331766Sken * 3. Neither the name of the copyright holder nor the names of its contributors 16331766Sken * may be used to endorse or promote products derived from this software 17331766Sken * without specific prior written permission. 18331766Sken * 19331766Sken * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20331766Sken * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21331766Sken * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22331766Sken * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 23331766Sken * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24331766Sken * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25331766Sken * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26331766Sken * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27331766Sken * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28331766Sken * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29331766Sken * POSSIBILITY OF SUCH DAMAGE. 30331766Sken * 31331766Sken * $FreeBSD: stable/11/sys/dev/ocs_fc/ocs_domain.h 331766 2018-03-30 15:28:25Z ken $ 32331766Sken */ 33331766Sken 34331766Sken/** 35331766Sken * @file 36331766Sken * Declare driver's domain handler exported interface 37331766Sken */ 38331766Sken 39331766Sken#if !defined(__OCS_DOMAIN_H__) 40331766Sken#define __OCS_DOMAIN_H__ 41331766Skenextern int32_t ocs_domain_init(ocs_t *ocs, ocs_domain_t *domain); 42331766Skenextern ocs_domain_t *ocs_domain_find(ocs_t *ocs, uint64_t fcf_wwn); 43331766Skenextern ocs_domain_t *ocs_domain_alloc(ocs_t *ocs, uint64_t fcf_wwn); 44331766Skenextern void ocs_domain_free(ocs_domain_t *domain); 45331766Skenextern void ocs_domain_force_free(ocs_domain_t *domain); 46331766Skenextern void ocs_register_domain_list_empty_cb(ocs_t *ocs, void (*callback)(ocs_t *ocs, void *arg), void *arg); 47331766Skenextern uint64_t ocs_get_wwn(ocs_hw_t *hw, ocs_hw_property_e prop); 48331766Sken 49331766Skenstatic inline void 50331766Skenocs_domain_lock_init(ocs_domain_t *domain) 51331766Sken{ 52331766Sken} 53331766Sken 54331766Skenstatic inline int32_t 55331766Skenocs_domain_lock_try(ocs_domain_t *domain) 56331766Sken{ 57331766Sken /* Use the device wide lock */ 58331766Sken return ocs_device_lock_try(domain->ocs); 59331766Sken} 60331766Sken 61331766Skenstatic inline void 62331766Skenocs_domain_lock(ocs_domain_t *domain) 63331766Sken{ 64331766Sken /* Use the device wide lock */ 65331766Sken ocs_device_lock(domain->ocs); 66331766Sken} 67331766Sken 68331766Skenstatic inline void 69331766Skenocs_domain_unlock(ocs_domain_t *domain) 70331766Sken{ 71331766Sken /* Use the device wide lock */ 72331766Sken ocs_device_unlock(domain->ocs); 73331766Sken} 74331766Sken 75331766Skenextern int32_t ocs_domain_cb(void *arg, ocs_hw_domain_event_e event, void *data); 76331766Skenextern void *__ocs_domain_init(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 77331766Skenextern void *__ocs_domain_wait_alloc(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 78331766Skenextern void *__ocs_domain_allocated(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 79331766Skenextern void *__ocs_domain_wait_attach(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 80331766Skenextern void *__ocs_domain_ready(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 81331766Skenextern void *__ocs_domain_wait_sports_free(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 82331766Skenextern void *__ocs_domain_wait_shutdown(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 83331766Skenextern void *__ocs_domain_wait_domain_lost(ocs_sm_ctx_t *ctx, ocs_sm_event_t evt, void *arg); 84331766Sken 85331766Skenextern void ocs_domain_save_sparms(ocs_domain_t *domain, void *payload); 86331766Skenextern void ocs_domain_attach(ocs_domain_t *domain, uint32_t s_id); 87331766Skenextern int ocs_domain_post_event(ocs_domain_t *domain, ocs_sm_event_t, void *); 88331766Sken 89331766Skenextern int ocs_ddump_domain(ocs_textbuf_t *textbuf, ocs_domain_t *domain); 90331766Skenextern void __ocs_domain_attach_internal(ocs_domain_t *domain, uint32_t s_id);; 91331766Sken#endif 92