37#define SA_SAS_PROTOCOL_SMP 0x00
38#define SA_SAS_PROTOCOL_SSP 0x01
39#define SA_SAS_PROTOCOL_STP 0x02
41#define SA_OPENFRM_SIZE (28)
42#define SA_IDENTIFY_FRAME_SIZE (28)
45#define SA_SAS_FRAME_TYPE_SSP_DATA 0x01
46#define SA_SAS_FRAME_TYPE_SSP_XRDY 0x05
47#define SA_SAS_FRAME_TYPE_SSP_CMD 0x06
48#define SA_SAS_FRAME_TYPE_SSP_RSP 0x07
49#define SA_SAS_FRAME_TYPE_SSP_TASK 0x16
50#define SA_SAS_FRAME_TYPE_SMP_REQ 0x40
51#define SA_SAS_FRAME_TYPE_SMP_RSP 0x41
53#define SA_SAS_CONNECTION_RATE_1_5G 0x08
54#define SA_SAS_CONNECTION_RATE_3_0G 0x09
55#define SA_SAS_CONNECTION_RATE_6_0G 0x0A
56#define SA_SAS_CONNECTION_RATE_12_0G 0x0B
58#define SA_SAS_DEV_TYPE_NO_DEVICE 0x00
59#define SA_SAS_DEV_TYPE_END_DEVICE 0x01
60#define SA_SAS_DEV_TYPE_EDGE_EXPANDER 0x02
61#define SA_SAS_DEV_TYPE_FANOUT_EXPANDER 0x03
63#define AGSA_DEV_TYPE_END_DEVICE (SA_SAS_DEV_TYPE_END_DEVICE << 4)
64#define AGSA_DEV_TYPE_EDGE_EXPANDER (SA_SAS_DEV_TYPE_EDGE_EXPANDER << 4)
65#define AGSA_DEV_TYPE_FAN_EXPANDER (SA_SAS_DEV_TYPE_FANOUT_EXPANDER << 4)
67#define SA_SAS_SMP_REPORT_GENERAL 0x00
68#define SA_SAS_SMP_REPORT_MANUFACTURE_INFORMATION 0x01
69#define SA_SAS_SMP_READ_GPIO_REGISTER 0x02
70#define SA_SAS_SMP_DISCOVER 0x10
71#define SA_SAS_SMP_REPORT_PHY_ERROR_LOG 0x11
72#define SA_SAS_SMP_REPORT_PHY_SATA 0x12
73#define SA_SAS_SMP_REPORT_ROUTING_INFORMATION 0x13
74#define SA_SAS_SMP_WRITE_GPIO_REGISTER 0x82
75#define SA_SAS_SMP_CONFIGURE_ROUTING_INFORMATION 0x90
76#define SA_SAS_SMP_PHY_CONTROL 0x91
77#define SA_SAS_SMP_PHY_TEST 0x92
79#define SA_SAS_SMP_FUNCTION_ACCEPTED 0x00
80#define SA_SAS_SMP_FUNCTION_UNKNOWN 0x01
81#define SA_SAS_SMP_FUNCTION_FAILED 0x02
82#define SA_SAS_SMP_INVALID_REQ_FRAME_LENGTH 0x03
83#define SA_SAS_SMP_PHY_NOT_EXIST 0x10
85#define SA_SAS_ROUTING_DIRECT 0x00
86#define SA_SAS_ROUTING_SUBTRACTIVE 0x01
87#define SA_SAS_ROUTING_TABLE 0x02
89#define SA_SAS_PHYCTL_LINK_RESET 0x01
90#define SA_SAS_PHYCTL_HARD_RESET 0x02
91#define SA_SAS_PHYCTL_DISABLE 0x03
92#define SA_SAS_PHYCTL_CLEAR_ERROR_LOG 0x05
93#define SA_SAS_PHYCTL_CLEAR_AFFILIATION 0x06
94#define SA_SAS_PHYCTL_TRANSMIT_PS_SIGNAL 0x07
96#define SA_SSP_CMDIU_LEN_BYTES 28
97#define SA_SSP_TMIU_LEN_BYTES 28
100#define SASD_DEV_SATA_MASK 0xF0
101#define SASD_DEV_SAS_MASK 0x0F
103#define SASD_DEV_SAS_END_DEVICE 0x01
104#define SASD_DEV_SAS_EDGE_EXPANDER 0x02
105#define SASD_DEV_SAS_FAN_EXPANDER 0x03
107#define SASD_DEV_SATA_ATA_DEVICE 0x10
108#define SASD_DEV_SATA_ATAPI_DEVICE 0x20
109#define SASD_DEV_SATA_PM_DEVICE 0x30
110#define SASD_DEV_SATA_SEMB_DEVICE 0x40
111#define SASD_DEV_SATA_SEMB_WO_SEP_DEVICE 0x50
113#define SASD_DEV_SATA_UNKNOWN_DEVICE 0xFF
116#define SASD_TASK_ATTR_SIMPLE 0x0
117#define SASD_TASK_ATTR_HEAD_OF_QUEUE 0x1
118#define SASD_TASK_ATTR_ORDERED 0x2
119#define SASD_TASK_ATTR_ACA 0x4
125#define SASD_SAS_ABORT_TASK 0x01
126#define SASD_SAS_ABORT_TASK_SET 0x02
127#define SASD_SAS_CLEAR_TASK_SET 0x04
128#define SASD_SAS_LOGICAL_UNIT_RESET 0x08
129#define SASD_SAS_CLEAR_ACA 0x40
130#define SASD_SAS_QUARY_TASK 0x80
135#define SA_SATA_MAX_QUEUED_COMMANDS 32
136#define SA_SATA_MAX_PM_PORTS 15
138#define SA_SATA_FIS_TYPE_HOST_2_DEV 0x27
139#define SA_SATA_FIS_TYPE_DEV_2_HOST 0x34
140#define SA_SATA_FIS_TYPE_SET_DEVICE 0xA1
141#define SA_SATA_FIS_TYPE_DMA_ACTIVE 0x39
142#define SA_SATA_FIS_TYPE_FDMA_SETUP 0x41
143#define SA_SATA_FIS_TYPE_BIST 0x58
145#define SA_SATA_CMD_IDENTIFY_DEVICE 0xEC
146#define SA_SATA_CMD_EXEC_DEV_DIAG 0x90
148#define SA_SATA_CONTROL_SRST 0x04
150#define SA_SATA_H2DREG_LEN_BYTES 20
151#define SA_SATA_H2D_BIST_LEN_BYTES 12
168#define SA_SATA_BIST_PATTERN_T_BIT 0x80
169#define SA_SATA_BIST_PATTERN_A_BIT 0x40
170#define SA_SATA_BIST_PATTERN_S_BIT 0x20
171#define SA_SATA_BIST_PATTERN_L_BIT 0x10
172#define SA_SATA_BIST_PATTERN_F_BIT 0x08
173#define SA_SATA_BIST_PATTERN_P_BIT 0x04
174#define SA_SATA_BIST_PATTERN_R_BIT 0x02
175#define SA_SATA_BIST_PATTERN_V_BIT 0x01
289#define SA_SATA_RD2H_I_BIT 0x40
482#define SA_IDFRM_GET_SAS_ADDRESSLO(identFrame) \
483 DMA_BEBIT32_TO_BIT32(*(bit32 *)(identFrame)->sasAddressLo)
485#define SA_IDFRM_GET_SAS_ADDRESSHI(identFrame) \
486 DMA_BEBIT32_TO_BIT32(*(bit32 *)(identFrame)->sasAddressHi)
488#define SA_IDFRM_GET_DEVICETTYPE(identFrame) \
489 (((identFrame)->deviceType_addressFrameType & 0x70) >> 4)
491#define SA_IDFRM_PUT_SAS_ADDRESSLO(identFrame, src32) \
492 ((*(bit32 *)((identFrame)->sasAddressLo)) = BIT32_TO_DMA_BEBIT32(src32))
494#define SA_IDFRM_PUT_SAS_ADDRESSHI(identFrame, src32) \
495 ((*(bit32 *)((identFrame)->sasAddressHi)) = BIT32_TO_DMA_BEBIT32(src32))
497#define SA_IDFRM_SSP_BIT 0x8
498#define SA_IDFRM_STP_BIT 0x4
499#define SA_IDFRM_SMP_BIT 0x2
500#define SA_IDFRM_SATA_BIT 0x1
503#define SA_IDFRM_IS_SSP_INITIATOR(identFrame) \
504 (((identFrame)->initiator_ssp_stp_smp & SA_IDFRM_SSP_BIT) == SA_IDFRM_SSP_BIT)
506#define SA_IDFRM_IS_STP_INITIATOR(identFrame) \
507 (((identFrame)->initiator_ssp_stp_smp & SA_IDFRM_STP_BIT) == SA_IDFRM_STP_BIT)
509#define SA_IDFRM_IS_SMP_INITIATOR(identFrame) \
510 (((identFrame)->initiator_ssp_stp_smp & SA_IDFRM_SMP_BIT) == SA_IDFRM_SMP_BIT)
512#define SA_IDFRM_IS_SSP_TARGET(identFrame) \
513 (((identFrame)->target_ssp_stp_smp & SA_IDFRM_SSP_BIT) == SA_IDFRM_SSP_BIT)
515#define SA_IDFRM_IS_STP_TARGET(identFrame) \
516 (((identFrame)->target_ssp_stp_smp & SA_IDFRM_STP_BIT) == SA_IDFRM_STP_BIT)
518#define SA_IDFRM_IS_SMP_TARGET(identFrame) \
519 (((identFrame)->target_ssp_stp_smp & SA_IDFRM_SMP_BIT) == SA_IDFRM_SMP_BIT)
521#define SA_IDFRM_IS_SATA_DEVICE(identFrame) \
522 (((identFrame)->target_ssp_stp_smp & SA_IDFRM_SATA_BIT) == SA_IDFRM_SATA_BIT)
807#define SA_SSPCMD_GET_TASKATTRIB(pCmd) ((pCmd)->efb_tp_taskAttribute & 0x7)
878#define SA_SSPRESP_GET_SENSEDATALEN(pSSPResp) \
879 DMA_BEBIT32_TO_BIT32(*(bit32*)(pSSPResp)->senseDataLen)
881#define SA_SSPRESP_GET_RESPONSEDATALEN(pSSPResp) \
882 DMA_BEBIT32_TO_BIT32(*(bit32*)(pSSPResp)->responsedataLen)
884#define SA_SSPRESP_GET_DATAPRES(pSSPResp) ((pSSPResp)->dataPres & 0x3)
931#define SA_REPORT_GENERAL_CONFIGURING_BIT 0x2
932#define SA_REPORT_GENERAL_CONFIGURABLE_BIT 0x1
947#define SA_REPORT_GENERAL_IS_CONFIGURING(pResp) \
948 (((pResp)->configuring_configurable & SA_REPORT_GENERAL_CONFIGURING_BIT) == \
949 SA_REPORT_GENERAL_CONFIGURING_BIT)
951#define SA_REPORT_GENERAL_IS_CONFIGURABLE(pResp) \
952 (((pResp)->configuring_configurable & SA_REPORT_GENERAL_CONFIGURABLE_BIT) == \
953 SA_REPORT_GENERAL_CONFIGURABLE_BIT)
955#define SA_REPORT_GENERAL_GET_ROUTEINDEXES(pResp) \
956 DMA_BEBIT16_TO_BIT16(*(bit16 *)((pResp)->expanderRouteIndexes16))
1035#define SA_DISCRSP_SSP_BIT 0x08
1036#define SA_DISCRSP_STP_BIT 0x04
1037#define SA_DISCRSP_SMP_BIT 0x02
1038#define SA_DISCRSP_SATA_BIT 0x01
1040#define SA_DISCRSP_SATA_PS_BIT 0x80
1042#define SA_DISCRSP_GET_ATTACHED_DEVTYPE(pResp) \
1043 (((pResp)->attachedDeviceType & 0x70) >> 4)
1044#define SA_DISCRSP_GET_LINKRATE(pResp) \
1045 ((pResp)->negotiatedPhyLinkRate & 0x0F)
1047#define SA_DISCRSP_IS_SSP_INITIATOR(pResp) \
1048 (((pResp)->attached_Ssp_Stp_Smp_Sata_Initiator & SA_DISCRSP_SSP_BIT) == SA_DISCRSP_SSP_BIT)
1049#define SA_DISCRSP_IS_STP_INITIATOR(pResp) \
1050 (((pResp)->attached_Ssp_Stp_Smp_Sata_Initiator & SA_DISCRSP_STP_BIT) == SA_DISCRSP_STP_BIT)
1051#define SA_DISCRSP_IS_SMP_INITIATOR(pResp) \
1052 (((pResp)->attached_Ssp_Stp_Smp_Sata_Initiator & SA_DISCRSP_SMP_BIT) == SA_DISCRSP_SMP_BIT)
1053#define SA_DISCRSP_IS_SATA_HOST(pResp) \
1054 (((pResp)->attached_Ssp_Stp_Smp_Sata_Initiator & SA_DISCRSP_SATA_BIT) == SA_DISCRSP_SATA_BIT)
1056#define SA_DISCRSP_IS_SSP_TARGET(pResp) \
1057 (((pResp)->attached_SataPS_Ssp_Stp_Smp_Sata_Target & SA_DISCRSP_SSP_BIT) == SA_DISCRSP_SSP_BIT)
1058#define SA_DISCRSP_IS_STP_TARGET(pResp) \
1059 (((pResp)->attached_SataPS_Ssp_Stp_Smp_Sata_Target & SA_DISCRSP_STP_BIT) == SA_DISCRSP_STP_BIT)
1060#define SA_DISCRSP_IS_SMP_TARGET(pResp) \
1061 (((pResp)->attached_SataPS_Ssp_Stp_Smp_Sata_Target & SA_DISCRSP_SMP_BIT) == SA_DISCRSP_SMP_BIT)
1062#define SA_DISCRSP_IS_SATA_DEVICE(pResp) \
1063 (((pResp)->attached_SataPS_Ssp_Stp_Smp_Sata_Target & SA_DISCRSP_SATA_BIT) == SA_DISCRSP_SATA_BIT)
1064#define SA_DISCRSP_IS_SATA_PORTSELECTOR(pResp) \
1065 (((pResp)->attached_SataPS_Ssp_Stp_Smp_Sata_Target & SA_DISCRSP_SATA_PS_BIT) == SA_DISCRSP_SATA_PS_BIT)
1067#define SA_DISCRSP_GET_SAS_ADDRESSHI(pResp) \
1068 DMA_BEBIT32_TO_BIT32(*(bit32 *)(pResp)->sasAddressHi)
1069#define SA_DISCRSP_GET_SAS_ADDRESSLO(pResp) \
1070 DMA_BEBIT32_TO_BIT32(*(bit32 *)(pResp)->sasAddressLo)
1072#define SA_DISCRSP_GET_ATTACHED_SAS_ADDRESSHI(pResp) \
1073 DMA_BEBIT32_TO_BIT32(*(bit32 *)(pResp)->attachedSasAddressHi)
1074#define SA_DISCRSP_GET_ATTACHED_SAS_ADDRESSLO(pResp) \
1075 DMA_BEBIT32_TO_BIT32(*(bit32 *)(pResp)->attachedSasAddressLo)
1077#define SA_DISCRSP_VIRTUALPHY_BIT 0x80
1078#define SA_DISCRSP_IS_VIRTUALPHY(pResp) \
1079 (((pResp)->virtualPhy_partialPathwayTimeout & SA_DISCRSP_VIRTUALPHY_BIT) == SA_DISCRSP_VIRTUALPHY_BIT)
1081#define SA_DISCRSP_GET_ROUTINGATTRIB(pResp) \
1082 ((pResp)->routingAttribute & 0x0F)
struct agsaFisRegD2HHeader_s agsaFisRegD2HHeader_t
struct agsaSSPResponseInfoUnit_s agsaSSPResponseInfoUnit_t
structure describes an SSP Response INFORMATION UNIT
struct agsaSmpReqReportPhySata_s agsaSmpReqReportPhySata_t
struct agsaFisRegH2DData_s agsaFisRegH2DData_t
Structure for SATA Host to Device Register FIS.
struct agsaFisPioSetup_s agsaFisPioSetup_t
struct agsaSSPScsiTaskMgntReq_s agsaSSPScsiTaskMgntReq_t
structure describes a SAS SSP Task Management command request
struct agsaFisRegH2DHeader_s agsaFisRegH2DHeader_t
struct agsaSmpReqReportRouteTable_s agsaSmpReqReportRouteTable_t
struct agsaFisRegD2HData_s agsaFisRegD2HData_t
struct agsaFisPioSetupHeader_s agsaFisPioSetupHeader_t
struct agsaSmpRespDiscover_s agsaSmpRespDiscover_t
struct agsaSASIdentify_s agsaSASIdentify_t
describe SAS IDENTIFY address frame
struct agsaSATAIdentifyData_s agsaSATAIdentifyData_t
data structure provides the identify data of the SATA device
struct agsaSmpReqConfigureRouteInformation_s agsaSmpReqConfigureRouteInformation_t
struct agsaFisRegDeviceToHost_s agsaFisRegDeviceToHost_t
struct agsaSSPFrameFormat_s agsaSSPFrameFormat_t
struct agsaFisRegHostToDevice_s agsaFisRegHostToDevice_t
struct agsaSMPFrameHeader_s agsaSMPFrameHeader_t
data structure describes the first four bytes of the SMP frame.
struct agsaSmpRespReportGeneral_s agsaSmpRespReportGeneral_t
union agsaFisHeader_s agsaFisHeader_t
union agsaSATAHostFis_u agsaSATAHostFis_t
union data structure specifies a FIS from host software
struct agsaSSPCmdInfoUnit_s agsaSSPCmdInfoUnit_t
data structure describes an SSP Command INFORMATION UNIT
struct agsaSmpRespReportRouteTable_s agsaSmpRespReportRouteTable_t
struct agsaFisSetDevBits_s agsaFisSetDevBits_t
struct agsaSmpReqDiscover_s agsaSmpReqDiscover_t
struct agsaSmpReqPhyControl_s agsaSmpReqPhyControl_t
struct agsaFisSetDevBitsHeader_s agsaFisSetDevBitsHeader_t
struct agsaFisBIST_s agsaFisBIST_t
struct agsaFisPioSetupData_s agsaFisPioSetupData_t
This structure is used.
struct agsaFisBISTData_s agsaFisBISTData_t
struct agsaFisBISTHeader_s agsaFisBISTHeader_t
struct agsaSmpRespReportManufactureInfo_s agsaSmpRespReportManufactureInfo_t
struct agsaSmpRespReportPhySata_s agsaSmpRespReportPhySata_t
struct agsaSSPOpenFrame_s agsaSSPOpenFrame_t
struct agsaFisSetDevBitsData_s agsaFisSetDevBitsData_t
Structure for SATA SetDeviceBit FIS.
union data structure specifies a FIS from host software
agsaFisRegHostToDevice_t fisRegHostToDev