Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/ipvs-2.6
[pandora-kernel.git] / drivers / scsi / bfa / bfi.h
index d36c81b..1e258d5 100644 (file)
@@ -190,6 +190,9 @@ enum bfi_pcifn_class {
  */
 enum bfi_mclass {
        BFI_MC_IOC              = 1,    /*  IO Controller (IOC)     */
+       BFI_MC_DIAG             = 2,    /*  Diagnostic Msgs            */
+       BFI_MC_FLASH            = 3,    /*  Flash message class */
+       BFI_MC_CEE              = 4,    /*  CEE */
        BFI_MC_FCPORT           = 5,    /*  FC port                         */
        BFI_MC_IOCFC            = 6,    /*  FC - IO Controller (IOC)        */
        BFI_MC_ABLK             = 7,    /*  ASIC block configuration        */
@@ -205,6 +208,8 @@ enum bfi_mclass {
        BFI_MC_IOIM_IOCOM       = 17,   /*  good IO completion              */
        BFI_MC_TSKIM            = 18,   /*  Initiator Task management       */
        BFI_MC_PORT             = 21,   /*  Physical port                   */
+       BFI_MC_SFP              = 22,   /*  SFP module  */
+       BFI_MC_PHY              = 25,   /*  External PHY message class  */
        BFI_MC_MAX              = 32
 };
 
@@ -336,7 +341,7 @@ struct bfi_ioc_image_hdr_s {
         ((u32)(__p1_mode)))
 
 #define BFI_FWBOOT_TYPE_NORMAL 0
-#define BFI_FWBOOT_TYPE_MEMTEST        1
+#define BFI_FWBOOT_TYPE_MEMTEST        2
 #define BFI_FWBOOT_ENV_OS       0
 
 enum bfi_port_mode {
@@ -706,6 +711,422 @@ struct bfi_ablk_i2h_rsp_s {
        u8                      port_mode;
 };
 
+
+/*
+ *     CEE module specific messages
+ */
+
+/* Mailbox commands from host to firmware */
+enum bfi_cee_h2i_msgs_e {
+       BFI_CEE_H2I_GET_CFG_REQ = 1,
+       BFI_CEE_H2I_RESET_STATS = 2,
+       BFI_CEE_H2I_GET_STATS_REQ = 3,
+};
+
+enum bfi_cee_i2h_msgs_e {
+       BFI_CEE_I2H_GET_CFG_RSP = BFA_I2HM(1),
+       BFI_CEE_I2H_RESET_STATS_RSP = BFA_I2HM(2),
+       BFI_CEE_I2H_GET_STATS_RSP = BFA_I2HM(3),
+};
+
+/*
+ * H2I command structure for resetting the stats
+ */
+struct bfi_cee_reset_stats_s {
+       struct bfi_mhdr_s  mh;
+};
+
+/*
+ * Get configuration  command from host
+ */
+struct bfi_cee_get_req_s {
+       struct bfi_mhdr_s       mh;
+       union bfi_addr_u        dma_addr;
+};
+
+/*
+ * Reply message from firmware
+ */
+struct bfi_cee_get_rsp_s {
+       struct bfi_mhdr_s       mh;
+       u8                      cmd_status;
+       u8                      rsvd[3];
+};
+
+/*
+ * Reply message from firmware
+ */
+struct bfi_cee_stats_rsp_s {
+       struct bfi_mhdr_s       mh;
+       u8                      cmd_status;
+       u8                      rsvd[3];
+};
+
+/* Mailbox message structures from firmware to host    */
+union bfi_cee_i2h_msg_u {
+       struct bfi_mhdr_s               mh;
+       struct bfi_cee_get_rsp_s        get_rsp;
+       struct bfi_cee_stats_rsp_s      stats_rsp;
+};
+
+/*
+ * SFP related
+ */
+
+enum bfi_sfp_h2i_e {
+       BFI_SFP_H2I_SHOW        = 1,
+       BFI_SFP_H2I_SCN         = 2,
+};
+
+enum bfi_sfp_i2h_e {
+       BFI_SFP_I2H_SHOW = BFA_I2HM(BFI_SFP_H2I_SHOW),
+       BFI_SFP_I2H_SCN  = BFA_I2HM(BFI_SFP_H2I_SCN),
+};
+
+/*
+ *     SFP state
+ */
+enum bfa_sfp_stat_e {
+       BFA_SFP_STATE_INIT      = 0,    /* SFP state is uninit  */
+       BFA_SFP_STATE_REMOVED   = 1,    /* SFP is removed       */
+       BFA_SFP_STATE_INSERTED  = 2,    /* SFP is inserted      */
+       BFA_SFP_STATE_VALID     = 3,    /* SFP is valid         */
+       BFA_SFP_STATE_UNSUPPORT = 4,    /* SFP is unsupport     */
+       BFA_SFP_STATE_FAILED    = 5,    /* SFP i2c read fail    */
+};
+
+/*
+ *  SFP memory access type
+ */
+enum bfi_sfp_mem_e {
+       BFI_SFP_MEM_ALL         = 0x1,  /* access all data field */
+       BFI_SFP_MEM_DIAGEXT     = 0x2,  /* access diag ext data field only */
+};
+
+struct bfi_sfp_req_s {
+       struct bfi_mhdr_s       mh;
+       u8                      memtype;
+       u8                      rsvd[3];
+       struct bfi_alen_s       alen;
+};
+
+struct bfi_sfp_rsp_s {
+       struct bfi_mhdr_s       mh;
+       u8                      status;
+       u8                      state;
+       u8                      rsvd[2];
+};
+
+/*
+ *     FLASH module specific
+ */
+enum bfi_flash_h2i_msgs {
+       BFI_FLASH_H2I_QUERY_REQ = 1,
+       BFI_FLASH_H2I_ERASE_REQ = 2,
+       BFI_FLASH_H2I_WRITE_REQ = 3,
+       BFI_FLASH_H2I_READ_REQ = 4,
+       BFI_FLASH_H2I_BOOT_VER_REQ = 5,
+};
+
+enum bfi_flash_i2h_msgs {
+       BFI_FLASH_I2H_QUERY_RSP = BFA_I2HM(1),
+       BFI_FLASH_I2H_ERASE_RSP = BFA_I2HM(2),
+       BFI_FLASH_I2H_WRITE_RSP = BFA_I2HM(3),
+       BFI_FLASH_I2H_READ_RSP = BFA_I2HM(4),
+       BFI_FLASH_I2H_BOOT_VER_RSP = BFA_I2HM(5),
+       BFI_FLASH_I2H_EVENT = BFA_I2HM(127),
+};
+
+/*
+ * Flash query request
+ */
+struct bfi_flash_query_req_s {
+       struct bfi_mhdr_s mh;   /* Common msg header */
+       struct bfi_alen_s alen;
+};
+
+/*
+ * Flash erase request
+ */
+struct bfi_flash_erase_req_s {
+       struct bfi_mhdr_s       mh;     /* Common msg header */
+       u32     type;   /* partition type */
+       u8      instance; /* partition instance */
+       u8      rsv[3];
+};
+
+/*
+ * Flash write request
+ */
+struct bfi_flash_write_req_s {
+       struct bfi_mhdr_s mh;   /* Common msg header */
+       struct bfi_alen_s alen;
+       u32     type;   /* partition type */
+       u8      instance; /* partition instance */
+       u8      last;
+       u8      rsv[2];
+       u32     offset;
+       u32     length;
+};
+
+/*
+ * Flash read request
+ */
+struct bfi_flash_read_req_s {
+       struct bfi_mhdr_s mh;   /* Common msg header */
+       u32     type;           /* partition type */
+       u8      instance;       /* partition instance */
+       u8      rsv[3];
+       u32     offset;
+       u32     length;
+       struct bfi_alen_s alen;
+};
+
+/*
+ * Flash query response
+ */
+struct bfi_flash_query_rsp_s {
+       struct bfi_mhdr_s mh;   /* Common msg header */
+       u32     status;
+};
+
+/*
+ * Flash read response
+ */
+struct bfi_flash_read_rsp_s {
+       struct bfi_mhdr_s mh;   /* Common msg header */
+       u32     type;       /* partition type */
+       u8      instance;   /* partition instance */
+       u8      rsv[3];
+       u32     status;
+       u32     length;
+};
+
+/*
+ * Flash write response
+ */
+struct bfi_flash_write_rsp_s {
+       struct bfi_mhdr_s mh;   /* Common msg header */
+       u32     type;       /* partition type */
+       u8      instance;   /* partition instance */
+       u8      rsv[3];
+       u32     status;
+       u32     length;
+};
+
+/*
+ * Flash erase response
+ */
+struct bfi_flash_erase_rsp_s {
+       struct bfi_mhdr_s mh;   /* Common msg header */
+       u32     type;           /* partition type */
+       u8      instance;       /* partition instance */
+       u8      rsv[3];
+       u32     status;
+};
+
+/*
+ *----------------------------------------------------------------------
+ *                             DIAG
+ *----------------------------------------------------------------------
+ */
+enum bfi_diag_h2i {
+       BFI_DIAG_H2I_PORTBEACON = 1,
+       BFI_DIAG_H2I_LOOPBACK = 2,
+       BFI_DIAG_H2I_FWPING = 3,
+       BFI_DIAG_H2I_TEMPSENSOR = 4,
+       BFI_DIAG_H2I_LEDTEST = 5,
+       BFI_DIAG_H2I_QTEST      = 6,
+};
+
+enum bfi_diag_i2h {
+       BFI_DIAG_I2H_PORTBEACON = BFA_I2HM(BFI_DIAG_H2I_PORTBEACON),
+       BFI_DIAG_I2H_LOOPBACK = BFA_I2HM(BFI_DIAG_H2I_LOOPBACK),
+       BFI_DIAG_I2H_FWPING = BFA_I2HM(BFI_DIAG_H2I_FWPING),
+       BFI_DIAG_I2H_TEMPSENSOR = BFA_I2HM(BFI_DIAG_H2I_TEMPSENSOR),
+       BFI_DIAG_I2H_LEDTEST = BFA_I2HM(BFI_DIAG_H2I_LEDTEST),
+       BFI_DIAG_I2H_QTEST      = BFA_I2HM(BFI_DIAG_H2I_QTEST),
+};
+
+#define BFI_DIAG_MAX_SGES      2
+#define BFI_DIAG_DMA_BUF_SZ    (2 * 1024)
+#define BFI_BOOT_MEMTEST_RES_ADDR 0x900
+#define BFI_BOOT_MEMTEST_RES_SIG  0xA0A1A2A3
+
+struct bfi_diag_lb_req_s {
+       struct bfi_mhdr_s mh;
+       u32     loopcnt;
+       u32     pattern;
+       u8      lb_mode;        /*!< bfa_port_opmode_t */
+       u8      speed;          /*!< bfa_port_speed_t */
+       u8      rsvd[2];
+};
+
+struct bfi_diag_lb_rsp_s {
+       struct bfi_mhdr_s  mh;          /* 4 bytes */
+       struct bfa_diag_loopback_result_s res; /* 16 bytes */
+};
+
+struct bfi_diag_fwping_req_s {
+       struct bfi_mhdr_s mh;   /* 4 bytes */
+       struct bfi_alen_s alen; /* 12 bytes */
+       u32     data;           /* user input data pattern */
+       u32     count;          /* user input dma count */
+       u8      qtag;           /* track CPE vc */
+       u8      rsv[3];
+};
+
+struct bfi_diag_fwping_rsp_s {
+       struct bfi_mhdr_s  mh;          /* 4 bytes */
+       u32     data;           /* user input data pattern    */
+       u8      qtag;           /* track CPE vc               */
+       u8      dma_status;     /* dma status                 */
+       u8      rsv[2];
+};
+
+/*
+ * Temperature Sensor
+ */
+struct bfi_diag_ts_req_s {
+       struct bfi_mhdr_s mh;   /* 4 bytes */
+       u16     temp;           /* 10-bit A/D value */
+       u16     brd_temp;       /* 9-bit board temp */
+       u8      status;
+       u8      ts_junc;        /* show junction tempsensor   */
+       u8      ts_brd;         /* show board tempsensor      */
+       u8      rsv;
+};
+#define bfi_diag_ts_rsp_t struct bfi_diag_ts_req_s
+
+struct bfi_diag_ledtest_req_s {
+       struct bfi_mhdr_s  mh;  /* 4 bytes */
+       u8      cmd;
+       u8      color;
+       u8      portid;
+       u8      led;    /* bitmap of LEDs to be tested */
+       u16     freq;   /* no. of blinks every 10 secs */
+       u8      rsv[2];
+};
+
+/* notify host led operation is done */
+struct bfi_diag_ledtest_rsp_s {
+       struct bfi_mhdr_s  mh;  /* 4 bytes */
+};
+
+struct bfi_diag_portbeacon_req_s {
+       struct bfi_mhdr_s  mh;  /* 4 bytes */
+       u32     period; /* beaconing period */
+       u8      beacon; /* 1: beacon on */
+       u8      rsvd[3];
+};
+
+/* notify host the beacon is off */
+struct bfi_diag_portbeacon_rsp_s {
+       struct bfi_mhdr_s  mh;  /* 4 bytes */
+};
+
+struct bfi_diag_qtest_req_s {
+       struct bfi_mhdr_s       mh;             /* 4 bytes */
+       u32     data[BFI_LMSG_PL_WSZ]; /* fill up tcm prefetch area */
+};
+#define bfi_diag_qtest_rsp_t struct bfi_diag_qtest_req_s
+
+/*
+ *     PHY module specific
+ */
+enum bfi_phy_h2i_msgs_e {
+       BFI_PHY_H2I_QUERY_REQ = 1,
+       BFI_PHY_H2I_STATS_REQ = 2,
+       BFI_PHY_H2I_WRITE_REQ = 3,
+       BFI_PHY_H2I_READ_REQ = 4,
+};
+
+enum bfi_phy_i2h_msgs_e {
+       BFI_PHY_I2H_QUERY_RSP = BFA_I2HM(1),
+       BFI_PHY_I2H_STATS_RSP = BFA_I2HM(2),
+       BFI_PHY_I2H_WRITE_RSP = BFA_I2HM(3),
+       BFI_PHY_I2H_READ_RSP = BFA_I2HM(4),
+};
+
+/*
+ * External PHY query request
+ */
+struct bfi_phy_query_req_s {
+       struct bfi_mhdr_s       mh;             /* Common msg header */
+       u8                      instance;
+       u8                      rsv[3];
+       struct bfi_alen_s       alen;
+};
+
+/*
+ * External PHY stats request
+ */
+struct bfi_phy_stats_req_s {
+       struct bfi_mhdr_s       mh;             /* Common msg header */
+       u8                      instance;
+       u8                      rsv[3];
+       struct bfi_alen_s       alen;
+};
+
+/*
+ * External PHY write request
+ */
+struct bfi_phy_write_req_s {
+       struct bfi_mhdr_s       mh;             /* Common msg header */
+       u8              instance;
+       u8              last;
+       u8              rsv[2];
+       u32             offset;
+       u32             length;
+       struct bfi_alen_s       alen;
+};
+
+/*
+ * External PHY read request
+ */
+struct bfi_phy_read_req_s {
+       struct bfi_mhdr_s       mh;     /* Common msg header */
+       u8              instance;
+       u8              rsv[3];
+       u32             offset;
+       u32             length;
+       struct bfi_alen_s       alen;
+};
+
+/*
+ * External PHY query response
+ */
+struct bfi_phy_query_rsp_s {
+       struct bfi_mhdr_s       mh;     /* Common msg header */
+       u32                     status;
+};
+
+/*
+ * External PHY stats response
+ */
+struct bfi_phy_stats_rsp_s {
+       struct bfi_mhdr_s       mh;     /* Common msg header */
+       u32                     status;
+};
+
+/*
+ * External PHY read response
+ */
+struct bfi_phy_read_rsp_s {
+       struct bfi_mhdr_s       mh;     /* Common msg header */
+       u32                     status;
+       u32             length;
+};
+
+/*
+ * External PHY write response
+ */
+struct bfi_phy_write_rsp_s {
+       struct bfi_mhdr_s       mh;     /* Common msg header */
+       u32                     status;
+       u32                     length;
+};
+
 #pragma pack()
 
 #endif /* __BFI_H__ */