Author: kadesai
Date: Fri May 13 12:18:12 2016
New Revision: 299670
URL: https://svnweb.freebsd.org/changeset/base/299670

Log:
  Added supprot for Avago Intruder controller.
  
  Submitted by:   Sumit Saxena <sumit.sax...@broadcom.com>
  Reviewed by:    Kashyap Desai <kashyap.de...@broadcom.com>
  MFC after:  3 days
  Sponsored by:   AVAGO Technologies

Modified:
  head/sys/dev/mrsas/mrsas.c
  head/sys/dev/mrsas/mrsas.h
  head/sys/dev/mrsas/mrsas_cam.c
  head/sys/dev/mrsas/mrsas_fp.c

Modified: head/sys/dev/mrsas/mrsas.c
==============================================================================
--- head/sys/dev/mrsas/mrsas.c  Fri May 13 12:15:20 2016        (r299669)
+++ head/sys/dev/mrsas/mrsas.c  Fri May 13 12:18:12 2016        (r299670)
@@ -186,6 +186,8 @@ MRSAS_CTLR_ID device_table[] = {
        {0x1000, MRSAS_TBOLT, 0xffff, 0xffff, "AVAGO Thunderbolt SAS 
Controller"},
        {0x1000, MRSAS_INVADER, 0xffff, 0xffff, "AVAGO Invader SAS Controller"},
        {0x1000, MRSAS_FURY, 0xffff, 0xffff, "AVAGO Fury SAS Controller"},
+       {0x1000, MRSAS_INTRUDER, 0xffff, 0xffff, "AVAGO Intruder SAS 
Controller"},
+       {0x1000, MRSAS_INTRUDER_24, 0xffff, 0xffff, "AVAGO Intruder_24 SAS 
Controller"},
        {0, 0, 0, 0, NULL}
 };
 
@@ -1628,7 +1630,9 @@ mrsas_complete_cmd(struct mrsas_softc *s
                if (threshold_reply_count >= THRESHOLD_REPLY_COUNT) {
                        if (sc->msix_enable) {
                                if ((sc->device_id == MRSAS_INVADER) ||
-                                   (sc->device_id == MRSAS_FURY))
+                                   (sc->device_id == MRSAS_FURY) ||
+                                   (sc->device_id == MRSAS_INTRUDER) ||
+                                   (sc->device_id == MRSAS_INTRUDER_24))
                                        mrsas_write_reg(sc, 
sc->msix_reg_offset[MSIxIndex / 8],
                                            ((MSIxIndex & 0x7) << 24) |
                                            sc->last_reply_idx[MSIxIndex]);
@@ -1650,7 +1654,9 @@ mrsas_complete_cmd(struct mrsas_softc *s
        /* Clear response interrupt */
        if (sc->msix_enable) {
                if ((sc->device_id == MRSAS_INVADER) ||
-                   (sc->device_id == MRSAS_FURY)) {
+                   (sc->device_id == MRSAS_FURY) ||
+                   (sc->device_id == MRSAS_INTRUDER) ||
+                   (sc->device_id == MRSAS_INTRUDER_24)) {
                        mrsas_write_reg(sc, sc->msix_reg_offset[MSIxIndex / 8],
                            ((MSIxIndex & 0x7) << 24) |
                            sc->last_reply_idx[MSIxIndex]);
@@ -2449,7 +2455,9 @@ mrsas_ioc_init(struct mrsas_softc *sc)
 
        /* driver support Extended MSIX */
        if ((sc->device_id == MRSAS_INVADER) ||
-           (sc->device_id == MRSAS_FURY)) {
+           (sc->device_id == MRSAS_FURY) ||
+           (sc->device_id == MRSAS_INTRUDER) ||
+           (sc->device_id == MRSAS_INTRUDER_24)) {
                init_frame->driver_operations.
                    mfi_capabilities.support_additional_msix = 1;
        }
@@ -3483,7 +3491,10 @@ mrsas_build_mptmfi_passthru(struct mrsas
 
        io_req = mpt_cmd->io_request;
 
-       if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+       if ((sc->device_id == MRSAS_INVADER) ||
+           (sc->device_id == MRSAS_FURY) ||
+           (sc->device_id == MRSAS_INTRUDER) ||
+           (sc->device_id == MRSAS_INTRUDER_24)) {
                pMpi25IeeeSgeChain64_t sgl_ptr_end = 
(pMpi25IeeeSgeChain64_t)&io_req->SGL;
 
                sgl_ptr_end += sc->max_sge_in_main_msg - 1;

Modified: head/sys/dev/mrsas/mrsas.h
==============================================================================
--- head/sys/dev/mrsas/mrsas.h  Fri May 13 12:15:20 2016        (r299669)
+++ head/sys/dev/mrsas/mrsas.h  Fri May 13 12:18:12 2016        (r299670)
@@ -80,6 +80,8 @@ __FBSDID("$FreeBSD$");
 #define        MRSAS_TBOLT                     0x005b
 #define        MRSAS_INVADER           0x005d
 #define        MRSAS_FURY                      0x005f
+#define        MRSAS_INTRUDER          0x00ce
+#define        MRSAS_INTRUDER_24       0x00cf
 #define        MRSAS_PCI_BAR0          0x10
 #define        MRSAS_PCI_BAR1          0x14
 #define        MRSAS_PCI_BAR2          0x1C

Modified: head/sys/dev/mrsas/mrsas_cam.c
==============================================================================
--- head/sys/dev/mrsas/mrsas_cam.c      Fri May 13 12:15:20 2016        
(r299669)
+++ head/sys/dev/mrsas/mrsas_cam.c      Fri May 13 12:18:12 2016        
(r299670)
@@ -872,7 +872,10 @@ mrsas_setup_io(struct mrsas_softc *sc, s
                cmd->request_desc->SCSIIO.RequestFlags =
                    (MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY <<
                    MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
-               if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == 
MRSAS_FURY)) {
+               if ((sc->device_id == MRSAS_INVADER) ||
+                   (sc->device_id == MRSAS_FURY) ||
+                   (sc->device_id == MRSAS_INTRUDER) ||
+                   (sc->device_id == MRSAS_INTRUDER_24)) {
                        if (io_request->RaidContext.regLockFlags == 
REGION_TYPE_UNUSED)
                                cmd->request_desc->SCSIIO.RequestFlags =
                                    (MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
@@ -901,7 +904,10 @@ mrsas_setup_io(struct mrsas_softc *sc, s
                cmd->request_desc->SCSIIO.RequestFlags =
                    (MRSAS_REQ_DESCRIPT_FLAGS_LD_IO <<
                    MRSAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
-               if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == 
MRSAS_FURY)) {
+               if ((sc->device_id == MRSAS_INVADER) ||
+                   (sc->device_id == MRSAS_FURY) ||
+                   (sc->device_id == MRSAS_INTRUDER) ||
+                   (sc->device_id == MRSAS_INTRUDER_24)) {
                        if (io_request->RaidContext.regLockFlags == 
REGION_TYPE_UNUSED)
                                cmd->request_desc->SCSIIO.RequestFlags =
                                    (MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
@@ -1177,7 +1183,10 @@ mrsas_data_load_cb(void *arg, bus_dma_se
        io_request = cmd->io_request;
        sgl_ptr = (pMpi25IeeeSgeChain64_t)&io_request->SGL;
 
-       if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY)) {
+       if ((sc->device_id == MRSAS_INVADER) ||
+           (sc->device_id == MRSAS_FURY) ||
+           (sc->device_id == MRSAS_INTRUDER) ||
+           (sc->device_id == MRSAS_INTRUDER_24)) {
                pMpi25IeeeSgeChain64_t sgl_ptr_end = sgl_ptr;
 
                sgl_ptr_end += sc->max_sge_in_main_msg - 1;
@@ -1188,7 +1197,10 @@ mrsas_data_load_cb(void *arg, bus_dma_se
                        sgl_ptr->Address = segs[i].ds_addr;
                        sgl_ptr->Length = segs[i].ds_len;
                        sgl_ptr->Flags = 0;
-                       if ((sc->device_id == MRSAS_INVADER) || (sc->device_id 
== MRSAS_FURY)) {
+                       if ((sc->device_id == MRSAS_INVADER) ||
+                           (sc->device_id == MRSAS_FURY) ||
+                           (sc->device_id == MRSAS_INTRUDER) ||
+                           (sc->device_id == MRSAS_INTRUDER_24)) {
                                if (i == nseg - 1)
                                        sgl_ptr->Flags = 
IEEE_SGE_FLAGS_END_OF_LIST;
                        }
@@ -1198,7 +1210,10 @@ mrsas_data_load_cb(void *arg, bus_dma_se
                            (nseg > sc->max_sge_in_main_msg)) {
                                pMpi25IeeeSgeChain64_t sg_chain;
 
-                               if ((sc->device_id == MRSAS_INVADER) || 
(sc->device_id == MRSAS_FURY)) {
+                               if ((sc->device_id == MRSAS_INVADER) ||
+                                   (sc->device_id == MRSAS_FURY) ||
+                                   (sc->device_id == MRSAS_INTRUDER) ||
+                                   (sc->device_id == MRSAS_INTRUDER_24)) {
                                        if ((cmd->io_request->IoFlags & 
MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
                                            != 
MPI25_SAS_DEVICE0_FLAGS_ENABLED_FAST_PATH)
                                                cmd->io_request->ChainOffset = 
sc->chain_offset_io_request;
@@ -1207,7 +1222,10 @@ mrsas_data_load_cb(void *arg, bus_dma_se
                                } else
                                        cmd->io_request->ChainOffset = 
sc->chain_offset_io_request;
                                sg_chain = sgl_ptr;
-                               if ((sc->device_id == MRSAS_INVADER) || 
(sc->device_id == MRSAS_FURY))
+                               if ((sc->device_id == MRSAS_INVADER) ||
+                                   (sc->device_id == MRSAS_FURY) ||
+                                   (sc->device_id == MRSAS_INTRUDER) ||
+                                   (sc->device_id == MRSAS_INTRUDER_24))
                                        sg_chain->Flags = 
IEEE_SGE_FLAGS_CHAIN_ELEMENT;
                                else
                                        sg_chain->Flags = 
(IEEE_SGE_FLAGS_CHAIN_ELEMENT | MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR);

Modified: head/sys/dev/mrsas/mrsas_fp.c
==============================================================================
--- head/sys/dev/mrsas/mrsas_fp.c       Fri May 13 12:15:20 2016        
(r299669)
+++ head/sys/dev/mrsas/mrsas_fp.c       Fri May 13 12:18:12 2016        
(r299670)
@@ -749,7 +749,10 @@ mr_spanset_get_phy_params(struct mrsas_s
        u_int32_t logArm, rowMod, armQ, arm;
        u_int8_t do_invader = 0;
 
-       if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
+       if ((sc->device_id == MRSAS_INVADER) ||
+           (sc->device_id == MRSAS_FURY) ||
+           (sc->device_id == MRSAS_INTRUDER) ||
+           (sc->device_id == MRSAS_INTRUDER_24))
                do_invader = 1;
 
        /* Get row and span from io_info for Uneven Span IO. */
@@ -960,7 +963,10 @@ MR_BuildRaidContext(struct mrsas_softc *
                        regSize += stripSize;
        }
        pRAID_Context->timeoutValue = map->raidMap.fpPdIoTimeoutSec;
-       if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
+       if ((sc->device_id == MRSAS_INVADER) ||
+           (sc->device_id == MRSAS_FURY) ||
+           (sc->device_id == MRSAS_INTRUDER) ||
+           (sc->device_id == MRSAS_INTRUDER_24))
                pRAID_Context->regLockFlags = (isRead) ? raid->regTypeReqOnRead 
: raid->regTypeReqOnWrite;
        else
                pRAID_Context->regLockFlags = (isRead) ? 
REGION_TYPE_SHARED_READ : raid->regTypeReqOnWrite;
@@ -1451,7 +1457,10 @@ MR_GetPhyParams(struct mrsas_softc *sc, 
        u_int32_t rowMod, armQ, arm, logArm;
        u_int8_t do_invader = 0;
 
-       if ((sc->device_id == MRSAS_INVADER) || (sc->device_id == MRSAS_FURY))
+       if ((sc->device_id == MRSAS_INVADER) ||
+           (sc->device_id == MRSAS_FURY) ||
+           (sc->device_id == MRSAS_INTRUDER) ||
+           (sc->device_id == MRSAS_INTRUDER_24))
                do_invader = 1;
 
        row = mega_div64_32(stripRow, raid->rowDataSize);
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to