Added support for Avago/Broadcom Cutlass(12 Gbps- 16 port count) controllers.
Submitted by: Sumit Saxena <Sumit.Saxena@broadcom.com> Reviewed by: Kashyap Desai <Kashyap.Desai@broadcom.com> MFC after: 3 days Sponsored by: AVAGO/BROADCOM Limited
This commit is contained in:
parent
6fc44742fd
commit
8cd174a463
@ -188,6 +188,8 @@ MRSAS_CTLR_ID device_table[] = {
|
||||
{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"},
|
||||
{0x1000, MRSAS_CUTLASS_52, 0xffff, 0xffff, "AVAGO Cutlass_52 SAS Controller"},
|
||||
{0x1000, MRSAS_CUTLASS_53, 0xffff, 0xffff, "AVAGO Cutlass_53 SAS Controller"},
|
||||
{0, 0, 0, 0, NULL}
|
||||
};
|
||||
|
||||
@ -1630,7 +1632,9 @@ mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex)
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24))
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
mrsas_write_reg(sc, sc->msix_reg_offset[MSIxIndex / 8],
|
||||
((MSIxIndex & 0x7) << 24) |
|
||||
sc->last_reply_idx[MSIxIndex]);
|
||||
@ -1654,7 +1658,9 @@ mrsas_complete_cmd(struct mrsas_softc *sc, u_int32_t MSIxIndex)
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
mrsas_write_reg(sc, sc->msix_reg_offset[MSIxIndex / 8],
|
||||
((MSIxIndex & 0x7) << 24) |
|
||||
sc->last_reply_idx[MSIxIndex]);
|
||||
@ -2455,7 +2461,9 @@ mrsas_ioc_init(struct mrsas_softc *sc)
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
init_frame->driver_operations.
|
||||
mfi_capabilities.support_additional_msix = 1;
|
||||
}
|
||||
@ -3491,7 +3499,9 @@ mrsas_build_mptmfi_passthru(struct mrsas_softc *sc, struct mrsas_mfi_cmd *mfi_cm
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
pMpi25IeeeSgeChain64_t sgl_ptr_end = (pMpi25IeeeSgeChain64_t)&io_req->SGL;
|
||||
|
||||
sgl_ptr_end += sc->max_sge_in_main_msg - 1;
|
||||
|
@ -82,6 +82,8 @@ __FBSDID("$FreeBSD$");
|
||||
#define MRSAS_FURY 0x005f
|
||||
#define MRSAS_INTRUDER 0x00ce
|
||||
#define MRSAS_INTRUDER_24 0x00cf
|
||||
#define MRSAS_CUTLASS_52 0x0052
|
||||
#define MRSAS_CUTLASS_53 0x0053
|
||||
#define MRSAS_PCI_BAR0 0x10
|
||||
#define MRSAS_PCI_BAR1 0x14
|
||||
#define MRSAS_PCI_BAR2 0x1C
|
||||
|
@ -880,7 +880,9 @@ mrsas_setup_io(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (io_request->RaidContext.regLockFlags == REGION_TYPE_UNUSED)
|
||||
cmd->request_desc->SCSIIO.RequestFlags =
|
||||
(MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
|
||||
@ -912,7 +914,9 @@ mrsas_setup_io(struct mrsas_softc *sc, struct mrsas_mpt_cmd *cmd,
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (io_request->RaidContext.regLockFlags == REGION_TYPE_UNUSED)
|
||||
cmd->request_desc->SCSIIO.RequestFlags =
|
||||
(MRSAS_REQ_DESCRIPT_FLAGS_NO_LOCK <<
|
||||
@ -1191,7 +1195,9 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
pMpi25IeeeSgeChain64_t sgl_ptr_end = sgl_ptr;
|
||||
|
||||
sgl_ptr_end += sc->max_sge_in_main_msg - 1;
|
||||
@ -1205,7 +1211,9 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
if (i == nseg - 1)
|
||||
sgl_ptr->Flags = IEEE_SGE_FLAGS_END_OF_LIST;
|
||||
}
|
||||
@ -1218,7 +1226,9 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24)) {
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53)) {
|
||||
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;
|
||||
@ -1230,7 +1240,9 @@ mrsas_data_load_cb(void *arg, bus_dma_segment_t *segs, int nseg, int error)
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24))
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
sg_chain->Flags = IEEE_SGE_FLAGS_CHAIN_ELEMENT;
|
||||
else
|
||||
sg_chain->Flags = (IEEE_SGE_FLAGS_CHAIN_ELEMENT | MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR);
|
||||
|
@ -752,7 +752,9 @@ mr_spanset_get_phy_params(struct mrsas_softc *sc, u_int32_t ld, u_int64_t stripR
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24))
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
do_invader = 1;
|
||||
|
||||
/* Get row and span from io_info for Uneven Span IO. */
|
||||
@ -966,7 +968,9 @@ MR_BuildRaidContext(struct mrsas_softc *sc, struct IO_REQUEST_INFO *io_info,
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24))
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
pRAID_Context->regLockFlags = (isRead) ? raid->regTypeReqOnRead : raid->regTypeReqOnWrite;
|
||||
else
|
||||
pRAID_Context->regLockFlags = (isRead) ? REGION_TYPE_SHARED_READ : raid->regTypeReqOnWrite;
|
||||
@ -1454,7 +1458,9 @@ MR_GetPhyParams(struct mrsas_softc *sc, u_int32_t ld,
|
||||
if ((sc->device_id == MRSAS_INVADER) ||
|
||||
(sc->device_id == MRSAS_FURY) ||
|
||||
(sc->device_id == MRSAS_INTRUDER) ||
|
||||
(sc->device_id == MRSAS_INTRUDER_24))
|
||||
(sc->device_id == MRSAS_INTRUDER_24) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_52) ||
|
||||
(sc->device_id == MRSAS_CUTLASS_53))
|
||||
do_invader = 1;
|
||||
|
||||
row = mega_div64_32(stripRow, raid->rowDataSize);
|
||||
|
Loading…
Reference in New Issue
Block a user