^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef _SCSI_SAS_INTERNAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define _SCSI_SAS_INTERNAL_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define SAS_HOST_ATTRS 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define SAS_PHY_ATTRS 17
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define SAS_PORT_ATTRS 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define SAS_RPORT_ATTRS 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define SAS_END_DEV_ATTRS 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define SAS_EXPANDER_ATTRS 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) struct sas_internal {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) struct scsi_transport_template t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) struct sas_function_template *f;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct sas_domain_function_template *dft;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) struct device_attribute private_host_attrs[SAS_HOST_ATTRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) struct device_attribute private_phy_attrs[SAS_PHY_ATTRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) struct device_attribute private_port_attrs[SAS_PORT_ATTRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) struct device_attribute private_rphy_attrs[SAS_RPORT_ATTRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct device_attribute private_end_dev_attrs[SAS_END_DEV_ATTRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) struct device_attribute private_expander_attrs[SAS_EXPANDER_ATTRS];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) struct transport_container phy_attr_cont;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) struct transport_container port_attr_cont;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) struct transport_container rphy_attr_cont;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) struct transport_container end_dev_attr_cont;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) struct transport_container expander_attr_cont;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * The array of null terminated pointers to attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * needed by scsi_sysfs.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) struct device_attribute *host_attrs[SAS_HOST_ATTRS + 1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) struct device_attribute *phy_attrs[SAS_PHY_ATTRS + 1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) struct device_attribute *port_attrs[SAS_PORT_ATTRS + 1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) struct device_attribute *rphy_attrs[SAS_RPORT_ATTRS + 1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) struct device_attribute *end_dev_attrs[SAS_END_DEV_ATTRS + 1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) struct device_attribute *expander_attrs[SAS_EXPANDER_ATTRS + 1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define to_sas_internal(tmpl) container_of(tmpl, struct sas_internal, t)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #endif