rk30/rk2928 hdmi:
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / lpfc / lpfc_bsg.h
index b542aca6f5ae37e2698df0023c7bc13060d825d5..c8c2b47ea886f14cb992ec486108a8fafea2adf9 100644 (file)
  * These are the vendor unique structures passed in using the bsg
  * FC_BSG_HST_VENDOR message code type.
  */
-#define LPFC_BSG_VENDOR_SET_CT_EVENT   1
-#define LPFC_BSG_VENDOR_GET_CT_EVENT   2
-#define LPFC_BSG_VENDOR_SEND_MGMT_RESP 3
-#define LPFC_BSG_VENDOR_DIAG_MODE      4
-#define LPFC_BSG_VENDOR_DIAG_TEST      5
-#define LPFC_BSG_VENDOR_GET_MGMT_REV   6
-#define LPFC_BSG_VENDOR_MBOX           7
-#define LPFC_BSG_VENDOR_MENLO_CMD      8
-#define LPFC_BSG_VENDOR_MENLO_DATA     9
+#define LPFC_BSG_VENDOR_SET_CT_EVENT           1
+#define LPFC_BSG_VENDOR_GET_CT_EVENT           2
+#define LPFC_BSG_VENDOR_SEND_MGMT_RESP         3
+#define LPFC_BSG_VENDOR_DIAG_MODE              4
+#define LPFC_BSG_VENDOR_DIAG_RUN_LOOPBACK      5
+#define LPFC_BSG_VENDOR_GET_MGMT_REV           6
+#define LPFC_BSG_VENDOR_MBOX                   7
+#define LPFC_BSG_VENDOR_MENLO_CMD              8
+#define LPFC_BSG_VENDOR_MENLO_DATA             9
+#define LPFC_BSG_VENDOR_DIAG_MODE_END          10
+#define LPFC_BSG_VENDOR_LINK_DIAG_TEST         11
 
 struct set_ct_event {
        uint32_t command;
@@ -67,10 +69,25 @@ struct diag_mode_set {
        uint32_t timeout;
 };
 
+struct sli4_link_diag {
+       uint32_t command;
+       uint32_t timeout;
+       uint32_t test_id;
+       uint32_t loops;
+       uint32_t test_version;
+       uint32_t error_action;
+};
+
 struct diag_mode_test {
        uint32_t command;
 };
 
+struct diag_status {
+       uint32_t mbox_status;
+       uint32_t shdr_status;
+       uint32_t shdr_add_status;
+};
+
 #define LPFC_WWNN_TYPE         0
 #define LPFC_WWPN_TYPE         1
 
@@ -92,11 +109,15 @@ struct get_mgmt_rev_reply {
 };
 
 #define BSG_MBOX_SIZE 4096 /* mailbox command plus extended data */
+
+/* BSG mailbox request header */
 struct dfc_mbox_req {
        uint32_t command;
        uint32_t mbOffset;
        uint32_t inExtWLen;
        uint32_t outExtWLen;
+       uint32_t extMboxTag;
+       uint32_t extSeqNum;
 };
 
 /* Used for menlo command or menlo data. The xri is only used for menlo data */
@@ -171,7 +192,7 @@ struct lpfc_sli_config_mse {
 #define lpfc_mbox_sli_config_mse_len_WORD      buf_len
 };
 
-struct lpfc_sli_config_subcmd_hbd {
+struct lpfc_sli_config_hbd {
        uint32_t buf_len;
 #define lpfc_mbox_sli_config_ecmn_hbd_len_SHIFT        0
 #define lpfc_mbox_sli_config_ecmn_hbd_len_MASK 0xffffff
@@ -194,21 +215,39 @@ struct lpfc_sli_config_hdr {
        uint32_t reserved5;
 };
 
-struct lpfc_sli_config_generic {
+struct lpfc_sli_config_emb0_subsys {
        struct lpfc_sli_config_hdr      sli_config_hdr;
 #define LPFC_MBX_SLI_CONFIG_MAX_MSE     19
        struct lpfc_sli_config_mse      mse[LPFC_MBX_SLI_CONFIG_MAX_MSE];
+       uint32_t padding;
+       uint32_t word64;
+#define lpfc_emb0_subcmnd_opcode_SHIFT 0
+#define lpfc_emb0_subcmnd_opcode_MASK  0xff
+#define lpfc_emb0_subcmnd_opcode_WORD  word64
+#define lpfc_emb0_subcmnd_subsys_SHIFT 8
+#define lpfc_emb0_subcmnd_subsys_MASK  0xff
+#define lpfc_emb0_subcmnd_subsys_WORD  word64
+/* Subsystem FCOE (0x0C) OpCodes */
+#define SLI_CONFIG_SUBSYS_FCOE         0x0C
+#define FCOE_OPCODE_READ_FCF           0x08
+#define FCOE_OPCODE_ADD_FCF            0x09
 };
 
-struct lpfc_sli_config_subcmnd {
+struct lpfc_sli_config_emb1_subsys {
        struct lpfc_sli_config_hdr      sli_config_hdr;
        uint32_t word6;
-#define lpfc_subcmnd_opcode_SHIFT      0
-#define lpfc_subcmnd_opcode_MASK       0xff
-#define lpfc_subcmnd_opcode_WORD       word6
-#define lpfc_subcmnd_subsys_SHIFT      8
-#define lpfc_subcmnd_subsys_MASK       0xff
-#define lpfc_subcmnd_subsys_WORD       word6
+#define lpfc_emb1_subcmnd_opcode_SHIFT 0
+#define lpfc_emb1_subcmnd_opcode_MASK  0xff
+#define lpfc_emb1_subcmnd_opcode_WORD  word6
+#define lpfc_emb1_subcmnd_subsys_SHIFT 8
+#define lpfc_emb1_subcmnd_subsys_MASK  0xff
+#define lpfc_emb1_subcmnd_subsys_WORD  word6
+/* Subsystem COMN (0x01) OpCodes */
+#define SLI_CONFIG_SUBSYS_COMN         0x01
+#define COMN_OPCODE_READ_OBJECT                0xAB
+#define COMN_OPCODE_WRITE_OBJECT       0xAC
+#define COMN_OPCODE_READ_OBJECT_LIST   0xAD
+#define COMN_OPCODE_DELETE_OBJECT      0xAE
        uint32_t timeout;
        uint32_t request_length;
        uint32_t word9;
@@ -222,8 +261,8 @@ struct lpfc_sli_config_subcmnd {
        uint32_t rd_offset;
        uint32_t obj_name[26];
        uint32_t hbd_count;
-#define LPFC_MBX_SLI_CONFIG_MAX_HBD    10
-       struct lpfc_sli_config_subcmd_hbd   hbd[LPFC_MBX_SLI_CONFIG_MAX_HBD];
+#define LPFC_MBX_SLI_CONFIG_MAX_HBD    8
+       struct lpfc_sli_config_hbd      hbd[LPFC_MBX_SLI_CONFIG_MAX_HBD];
 };
 
 struct lpfc_sli_config_mbox {
@@ -235,7 +274,11 @@ struct lpfc_sli_config_mbox {
 #define lpfc_mqe_command_MASK          0x000000FF
 #define lpfc_mqe_command_WORD          word0
        union {
-               struct lpfc_sli_config_generic  sli_config_generic;
-               struct lpfc_sli_config_subcmnd  sli_config_subcmnd;
+               struct lpfc_sli_config_emb0_subsys sli_config_emb0_subsys;
+               struct lpfc_sli_config_emb1_subsys sli_config_emb1_subsys;
        } un;
 };
+
+/* driver only */
+#define SLI_CONFIG_NOT_HANDLED         0
+#define SLI_CONFIG_HANDLED             1