1*fd501800SSascha Wildner /*- 2*fd501800SSascha Wildner * Copyright (c) 2011-2015 LSI Corp. 3*fd501800SSascha Wildner * Copyright (c) 2013-2016 Avago Technologies 4*fd501800SSascha Wildner * All rights reserved. 5*fd501800SSascha Wildner * 6*fd501800SSascha Wildner * Redistribution and use in source and binary forms, with or without 7*fd501800SSascha Wildner * modification, are permitted provided that the following conditions 8*fd501800SSascha Wildner * are met: 9*fd501800SSascha Wildner * 1. Redistributions of source code must retain the above copyright 10*fd501800SSascha Wildner * notice, this list of conditions and the following disclaimer. 11*fd501800SSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 12*fd501800SSascha Wildner * notice, this list of conditions and the following disclaimer in the 13*fd501800SSascha Wildner * documentation and/or other materials provided with the distribution. 14*fd501800SSascha Wildner * 15*fd501800SSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16*fd501800SSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17*fd501800SSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18*fd501800SSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19*fd501800SSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20*fd501800SSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21*fd501800SSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22*fd501800SSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23*fd501800SSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24*fd501800SSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25*fd501800SSascha Wildner * SUCH DAMAGE. 26*fd501800SSascha Wildner * 27*fd501800SSascha Wildner * Avago Technologies (LSI) MPT-Fusion Host Adapter FreeBSD 28*fd501800SSascha Wildner * 29*fd501800SSascha Wildner * $FreeBSD: head/sys/dev/mpr/mpr_mapping.h 318427 2017-05-17 21:33:37Z slm $ 30*fd501800SSascha Wildner */ 31*fd501800SSascha Wildner 32*fd501800SSascha Wildner #ifndef _MPR_MAPPING_H 33*fd501800SSascha Wildner #define _MPR_MAPPING_H 34*fd501800SSascha Wildner 35*fd501800SSascha Wildner /** 36*fd501800SSascha Wildner * struct _map_phy_change - PHY entries received in Topology change list 37*fd501800SSascha Wildner * @physical_id: SAS address of the device attached with the associate PHY 38*fd501800SSascha Wildner * @device_info: bitfield provides detailed info about the device 39*fd501800SSascha Wildner * @dev_handle: device handle for the device pointed by this entry 40*fd501800SSascha Wildner * @slot: slot ID 41*fd501800SSascha Wildner * @is_processed: Flag to indicate whether this entry is processed or not 42*fd501800SSascha Wildner * @is_SATA_SSD: 1 if this is a SATA device AND an SSD, 0 otherwise 43*fd501800SSascha Wildner */ 44*fd501800SSascha Wildner struct _map_phy_change { 45*fd501800SSascha Wildner uint64_t physical_id; 46*fd501800SSascha Wildner uint32_t device_info; 47*fd501800SSascha Wildner uint16_t dev_handle; 48*fd501800SSascha Wildner uint16_t slot; 49*fd501800SSascha Wildner uint8_t reason; 50*fd501800SSascha Wildner uint8_t is_processed; 51*fd501800SSascha Wildner uint8_t is_SATA_SSD; 52*fd501800SSascha Wildner uint8_t reserved; 53*fd501800SSascha Wildner }; 54*fd501800SSascha Wildner 55*fd501800SSascha Wildner /** 56*fd501800SSascha Wildner * struct _map_port_change - PCIe Port entries received in PCIe Topology change 57*fd501800SSascha Wildner * list event 58*fd501800SSascha Wildner * @physical_id: WWID of the device attached to the associated port 59*fd501800SSascha Wildner * @device_info: bitfield provides detailed info about the device 60*fd501800SSascha Wildner * @MDTS: Maximum Data Transfer Size for the device 61*fd501800SSascha Wildner * @dev_handle: device handle for the device pointed by this entry 62*fd501800SSascha Wildner * @slot: slot ID 63*fd501800SSascha Wildner * @is_processed: Flag to indicate whether this entry is processed or not 64*fd501800SSascha Wildner */ 65*fd501800SSascha Wildner struct _map_port_change { 66*fd501800SSascha Wildner uint64_t physical_id; 67*fd501800SSascha Wildner uint32_t device_info; 68*fd501800SSascha Wildner uint32_t MDTS; 69*fd501800SSascha Wildner uint16_t dev_handle; 70*fd501800SSascha Wildner uint16_t slot; 71*fd501800SSascha Wildner uint8_t reason; 72*fd501800SSascha Wildner uint8_t is_processed; 73*fd501800SSascha Wildner uint8_t reserved[2]; 74*fd501800SSascha Wildner }; 75*fd501800SSascha Wildner 76*fd501800SSascha Wildner /** 77*fd501800SSascha Wildner * struct _map_topology_change - SAS/SATA entries to be removed from mapping 78*fd501800SSascha Wildner * table 79*fd501800SSascha Wildner * @enc_handle: enclosure handle where this device is located 80*fd501800SSascha Wildner * @exp_handle: expander handle where this device is located 81*fd501800SSascha Wildner * @num_entries: number of entries in the SAS Topology Change List event 82*fd501800SSascha Wildner * @start_phy_num: PHY number of the first PHY in the event data 83*fd501800SSascha Wildner * @num_phys: number of PHYs in the expander where this device is located 84*fd501800SSascha Wildner * @exp_status: status for the expander where this device is located 85*fd501800SSascha Wildner * @phy_details: more details about each PHY in the event data 86*fd501800SSascha Wildner */ 87*fd501800SSascha Wildner struct _map_topology_change { 88*fd501800SSascha Wildner uint16_t enc_handle; 89*fd501800SSascha Wildner uint16_t exp_handle; 90*fd501800SSascha Wildner uint8_t num_entries; 91*fd501800SSascha Wildner uint8_t start_phy_num; 92*fd501800SSascha Wildner uint8_t num_phys; 93*fd501800SSascha Wildner uint8_t exp_status; 94*fd501800SSascha Wildner struct _map_phy_change *phy_details; 95*fd501800SSascha Wildner }; 96*fd501800SSascha Wildner 97*fd501800SSascha Wildner /** 98*fd501800SSascha Wildner * struct _map_pcie_topology_change - PCIe entries to be removed from mapping 99*fd501800SSascha Wildner * table 100*fd501800SSascha Wildner * @enc_handle: enclosure handle where this device is located 101*fd501800SSascha Wildner * @switch_dev_handle: PCIe switch device handle where this device is located 102*fd501800SSascha Wildner * @num_entries: number of entries in the PCIe Topology Change List event 103*fd501800SSascha Wildner * @start_port_num: port number of the first port in the event data 104*fd501800SSascha Wildner * @num_ports: number of ports in the PCIe switch device 105*fd501800SSascha Wildner * @switch_status: status for the PCIe switch where this device is located 106*fd501800SSascha Wildner * @port_details: more details about each Port in the event data 107*fd501800SSascha Wildner */ 108*fd501800SSascha Wildner struct _map_pcie_topology_change { 109*fd501800SSascha Wildner uint16_t enc_handle; 110*fd501800SSascha Wildner uint16_t switch_dev_handle; 111*fd501800SSascha Wildner uint8_t num_entries; 112*fd501800SSascha Wildner uint8_t start_port_num; 113*fd501800SSascha Wildner uint8_t num_ports; 114*fd501800SSascha Wildner uint8_t switch_status; 115*fd501800SSascha Wildner struct _map_port_change *port_details; 116*fd501800SSascha Wildner }; 117*fd501800SSascha Wildner 118*fd501800SSascha Wildner extern int 119*fd501800SSascha Wildner mprsas_get_sas_address_for_sata_disk(struct mpr_softc *ioc, 120*fd501800SSascha Wildner u64 *sas_address, u16 handle, u32 device_info, u8 *is_SATA_SSD); 121*fd501800SSascha Wildner 122*fd501800SSascha Wildner #endif 123