diff options
author | Andy Yan <ayan@marvell.com> | 2009-05-08 17:46:40 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@HansenPartnership.com> | 2009-05-20 18:21:12 -0400 |
commit | 20b09c2992fefbe78f8cede7b404fb143a413c52 (patch) | |
tree | c7e2368e4dd3f38b66db95fa4982ef009e2df00a /drivers/scsi/mvsas/mv_defs.h | |
parent | dd4969a892ea522ecf9d7d826ba1531ce044d46f (diff) |
[SCSI] mvsas: add support for 94xx; layout change; bug fixes
This version contains following main changes
- Switch to new layout to support more types of ASIC.
- SSP TMF supported and related Error Handing enhanced.
- Support flash feature with delay 2*HZ when PHY changed.
- Support Marvell 94xx series ASIC for 6G SAS/SATA, which has 2
88SE64xx chips but any different register description.
- Support SPI flash for HBA-related configuration info.
- Other patch enhanced from kernel side such as increasing PHY type
[jejb: fold back in DMA_BIT_MASK changes]
Signed-off-by: Ying Chu <jasonchu@marvell.com>
Signed-off-by: Andy Yan <ayan@marvell.com>
Signed-off-by: Ke Wei <kewei@marvell.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/mvsas/mv_defs.h')
-rw-r--r-- | drivers/scsi/mvsas/mv_defs.h | 197 |
1 files changed, 129 insertions, 68 deletions
diff --git a/drivers/scsi/mvsas/mv_defs.h b/drivers/scsi/mvsas/mv_defs.h index d8e96a3e5a21..f8cb9defb961 100644 --- a/drivers/scsi/mvsas/mv_defs.h +++ b/drivers/scsi/mvsas/mv_defs.h | |||
@@ -1,53 +1,66 @@ | |||
1 | /* | 1 | /* |
2 | mv_defs.h - Marvell 88SE6440 SAS/SATA support | 2 | * Marvell 88SE64xx/88SE94xx const head file |
3 | 3 | * | |
4 | Copyright 2007 Red Hat, Inc. | 4 | * Copyright 2007 Red Hat, Inc. |
5 | Copyright 2008 Marvell. <kewei@marvell.com> | 5 | * Copyright 2008 Marvell. <kewei@marvell.com> |
6 | 6 | * | |
7 | This program is free software; you can redistribute it and/or | 7 | * This file is licensed under GPLv2. |
8 | modify it under the terms of the GNU General Public License as | 8 | * |
9 | published by the Free Software Foundation; either version 2, | 9 | * This program is free software; you can redistribute it and/or |
10 | or (at your option) any later version. | 10 | * modify it under the terms of the GNU General Public License as |
11 | 11 | * published by the Free Software Foundation; version 2 of the | |
12 | This program is distributed in the hope that it will be useful, | 12 | * License. |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty | 13 | * |
14 | of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 14 | * This program is distributed in the hope that it will be useful, |
15 | See the GNU General Public License for more details. | 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
17 | You should have received a copy of the GNU General Public | 17 | * General Public License for more details. |
18 | License along with this program; see the file COPYING. If not, | 18 | * |
19 | write to the Free Software Foundation, 675 Mass Ave, Cambridge, | 19 | * You should have received a copy of the GNU General Public License |
20 | MA 02139, USA. | 20 | * along with this program; if not, write to the Free Software |
21 | 21 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 | |
22 | */ | 22 | * USA |
23 | */ | ||
23 | 24 | ||
24 | #ifndef _MV_DEFS_H_ | 25 | #ifndef _MV_DEFS_H_ |
25 | #define _MV_DEFS_H_ | 26 | #define _MV_DEFS_H_ |
26 | 27 | ||
28 | |||
29 | enum chip_flavors { | ||
30 | chip_6320, | ||
31 | chip_6440, | ||
32 | chip_6485, | ||
33 | chip_9480, | ||
34 | chip_9180, | ||
35 | }; | ||
36 | |||
27 | /* driver compile-time configuration */ | 37 | /* driver compile-time configuration */ |
28 | enum driver_configuration { | 38 | enum driver_configuration { |
39 | MVS_SLOTS = 512, /* command slots */ | ||
29 | MVS_TX_RING_SZ = 1024, /* TX ring size (12-bit) */ | 40 | MVS_TX_RING_SZ = 1024, /* TX ring size (12-bit) */ |
30 | MVS_RX_RING_SZ = 1024, /* RX ring size (12-bit) */ | 41 | MVS_RX_RING_SZ = 1024, /* RX ring size (12-bit) */ |
31 | /* software requires power-of-2 | 42 | /* software requires power-of-2 |
32 | ring size */ | 43 | ring size */ |
44 | MVS_SOC_SLOTS = 64, | ||
45 | MVS_SOC_TX_RING_SZ = MVS_SOC_SLOTS * 2, | ||
46 | MVS_SOC_RX_RING_SZ = MVS_SOC_SLOTS * 2, | ||
33 | 47 | ||
34 | MVS_SLOTS = 512, /* command slots */ | ||
35 | MVS_SLOT_BUF_SZ = 8192, /* cmd tbl + IU + status + PRD */ | 48 | MVS_SLOT_BUF_SZ = 8192, /* cmd tbl + IU + status + PRD */ |
36 | MVS_SSP_CMD_SZ = 64, /* SSP command table buffer size */ | 49 | MVS_SSP_CMD_SZ = 64, /* SSP command table buffer size */ |
37 | MVS_ATA_CMD_SZ = 96, /* SATA command table buffer size */ | 50 | MVS_ATA_CMD_SZ = 96, /* SATA command table buffer size */ |
38 | MVS_OAF_SZ = 64, /* Open address frame buffer size */ | 51 | MVS_OAF_SZ = 64, /* Open address frame buffer size */ |
39 | 52 | MVS_QUEUE_SIZE = 32, /* Support Queue depth */ | |
40 | MVS_RX_FIS_COUNT = 17, /* Optional rx'd FISs (max 17) */ | 53 | MVS_CAN_QUEUE = MVS_SLOTS - 2, /* SCSI Queue depth */ |
41 | 54 | MVS_SOC_CAN_QUEUE = MVS_SOC_SLOTS - 2, | |
42 | MVS_QUEUE_SIZE = 30, /* Support Queue depth */ | ||
43 | MVS_CAN_QUEUE = MVS_SLOTS - 1, /* SCSI Queue depth */ | ||
44 | }; | 55 | }; |
45 | 56 | ||
46 | /* unchangeable hardware details */ | 57 | /* unchangeable hardware details */ |
47 | enum hardware_details { | 58 | enum hardware_details { |
48 | MVS_MAX_PHYS = 8, /* max. possible phys */ | 59 | MVS_MAX_PHYS = 8, /* max. possible phys */ |
49 | MVS_MAX_PORTS = 8, /* max. possible ports */ | 60 | MVS_MAX_PORTS = 8, /* max. possible ports */ |
50 | MVS_RX_FISL_SZ = 0x400 + (MVS_RX_FIS_COUNT * 0x100), | 61 | MVS_SOC_PHYS = 4, /* soc phys */ |
62 | MVS_SOC_PORTS = 4, /* soc phys */ | ||
63 | MVS_MAX_DEVICES = 1024, /* max supported device */ | ||
51 | }; | 64 | }; |
52 | 65 | ||
53 | /* peripheral registers (BAR2) */ | 66 | /* peripheral registers (BAR2) */ |
@@ -133,6 +146,8 @@ enum hw_register_bits { | |||
133 | CINT_PORT = (1U << 8), /* port0 event */ | 146 | CINT_PORT = (1U << 8), /* port0 event */ |
134 | CINT_PORT_MASK_OFFSET = 8, | 147 | CINT_PORT_MASK_OFFSET = 8, |
135 | CINT_PORT_MASK = (0xFF << CINT_PORT_MASK_OFFSET), | 148 | CINT_PORT_MASK = (0xFF << CINT_PORT_MASK_OFFSET), |
149 | CINT_PHY_MASK_OFFSET = 4, | ||
150 | CINT_PHY_MASK = (0x0F << CINT_PHY_MASK_OFFSET), | ||
136 | 151 | ||
137 | /* TX (delivery) ring bits */ | 152 | /* TX (delivery) ring bits */ |
138 | TXQ_CMD_SHIFT = 29, | 153 | TXQ_CMD_SHIFT = 29, |
@@ -142,7 +157,11 @@ enum hw_register_bits { | |||
142 | TXQ_CMD_SSP_FREE_LIST = 4, /* add to SSP targ free list */ | 157 | TXQ_CMD_SSP_FREE_LIST = 4, /* add to SSP targ free list */ |
143 | TXQ_CMD_SLOT_RESET = 7, /* reset command slot */ | 158 | TXQ_CMD_SLOT_RESET = 7, /* reset command slot */ |
144 | TXQ_MODE_I = (1U << 28), /* mode: 0=target,1=initiator */ | 159 | TXQ_MODE_I = (1U << 28), /* mode: 0=target,1=initiator */ |
160 | TXQ_MODE_TARGET = 0, | ||
161 | TXQ_MODE_INITIATOR = 1, | ||
145 | TXQ_PRIO_HI = (1U << 27), /* priority: 0=normal, 1=high */ | 162 | TXQ_PRIO_HI = (1U << 27), /* priority: 0=normal, 1=high */ |
163 | TXQ_PRI_NORMAL = 0, | ||
164 | TXQ_PRI_HIGH = 1, | ||
146 | TXQ_SRS_SHIFT = 20, /* SATA register set */ | 165 | TXQ_SRS_SHIFT = 20, /* SATA register set */ |
147 | TXQ_SRS_MASK = 0x7f, | 166 | TXQ_SRS_MASK = 0x7f, |
148 | TXQ_PHY_SHIFT = 12, /* PHY bitmap */ | 167 | TXQ_PHY_SHIFT = 12, /* PHY bitmap */ |
@@ -175,6 +194,8 @@ enum hw_register_bits { | |||
175 | MCH_SSP_FR_READ = 0x6, /* Read DATA frame(s) */ | 194 | MCH_SSP_FR_READ = 0x6, /* Read DATA frame(s) */ |
176 | MCH_SSP_FR_READ_RESP = 0x7, /* ditto, plus RESPONSE */ | 195 | MCH_SSP_FR_READ_RESP = 0x7, /* ditto, plus RESPONSE */ |
177 | 196 | ||
197 | MCH_SSP_MODE_PASSTHRU = 1, | ||
198 | MCH_SSP_MODE_NORMAL = 0, | ||
178 | MCH_PASSTHRU = (1U << 12), /* pass-through (SSP) */ | 199 | MCH_PASSTHRU = (1U << 12), /* pass-through (SSP) */ |
179 | MCH_FBURST = (1U << 11), /* first burst (SSP) */ | 200 | MCH_FBURST = (1U << 11), /* first burst (SSP) */ |
180 | MCH_CHK_LEN = (1U << 10), /* chk xfer len (SSP) */ | 201 | MCH_CHK_LEN = (1U << 10), /* chk xfer len (SSP) */ |
@@ -199,15 +220,12 @@ enum hw_register_bits { | |||
199 | PHY_BCAST_CHG = (1U << 2), /* broadcast(change) notif */ | 220 | PHY_BCAST_CHG = (1U << 2), /* broadcast(change) notif */ |
200 | PHY_RST_HARD = (1U << 1), /* hard reset + phy reset */ | 221 | PHY_RST_HARD = (1U << 1), /* hard reset + phy reset */ |
201 | PHY_RST = (1U << 0), /* phy reset */ | 222 | PHY_RST = (1U << 0), /* phy reset */ |
202 | PHY_MIN_SPP_PHYS_LINK_RATE_MASK = (0xF << 8), | ||
203 | PHY_MAX_SPP_PHYS_LINK_RATE_MASK = (0xF << 12), | ||
204 | PHY_NEG_SPP_PHYS_LINK_RATE_MASK_OFFSET = (16), | ||
205 | PHY_NEG_SPP_PHYS_LINK_RATE_MASK = | ||
206 | (0xF << PHY_NEG_SPP_PHYS_LINK_RATE_MASK_OFFSET), | ||
207 | PHY_READY_MASK = (1U << 20), | 223 | PHY_READY_MASK = (1U << 20), |
208 | 224 | ||
209 | /* MVS_Px_INT_STAT, MVS_Px_INT_MASK (per-phy events) */ | 225 | /* MVS_Px_INT_STAT, MVS_Px_INT_MASK (per-phy events) */ |
210 | PHYEV_DEC_ERR = (1U << 24), /* Phy Decoding Error */ | 226 | PHYEV_DEC_ERR = (1U << 24), /* Phy Decoding Error */ |
227 | PHYEV_DCDR_ERR = (1U << 23), /* STP Deocder Error */ | ||
228 | PHYEV_CRC_ERR = (1U << 22), /* STP CRC Error */ | ||
211 | PHYEV_UNASSOC_FIS = (1U << 19), /* unassociated FIS rx'd */ | 229 | PHYEV_UNASSOC_FIS = (1U << 19), /* unassociated FIS rx'd */ |
212 | PHYEV_AN = (1U << 18), /* SATA async notification */ | 230 | PHYEV_AN = (1U << 18), /* SATA async notification */ |
213 | PHYEV_BIST_ACT = (1U << 17), /* BIST activate FIS */ | 231 | PHYEV_BIST_ACT = (1U << 17), /* BIST activate FIS */ |
@@ -229,9 +247,10 @@ enum hw_register_bits { | |||
229 | /* MVS_PCS */ | 247 | /* MVS_PCS */ |
230 | PCS_EN_SATA_REG_SHIFT = (16), /* Enable SATA Register Set */ | 248 | PCS_EN_SATA_REG_SHIFT = (16), /* Enable SATA Register Set */ |
231 | PCS_EN_PORT_XMT_SHIFT = (12), /* Enable Port Transmit */ | 249 | PCS_EN_PORT_XMT_SHIFT = (12), /* Enable Port Transmit */ |
232 | PCS_EN_PORT_XMT_SHIFT2 = (8), /* For 6480 */ | 250 | PCS_EN_PORT_XMT_SHIFT2 = (8), /* For 6485 */ |
233 | PCS_SATA_RETRY = (1U << 8), /* retry ctl FIS on R_ERR */ | 251 | PCS_SATA_RETRY = (1U << 8), /* retry ctl FIS on R_ERR */ |
234 | PCS_RSP_RX_EN = (1U << 7), /* raw response rx */ | 252 | PCS_RSP_RX_EN = (1U << 7), /* raw response rx */ |
253 | PCS_SATA_RETRY_2 = (1U << 6), /* For 9180 */ | ||
235 | PCS_SELF_CLEAR = (1U << 5), /* self-clearing int mode */ | 254 | PCS_SELF_CLEAR = (1U << 5), /* self-clearing int mode */ |
236 | PCS_FIS_RX_EN = (1U << 4), /* FIS rx enable */ | 255 | PCS_FIS_RX_EN = (1U << 4), /* FIS rx enable */ |
237 | PCS_CMD_STOP_ERR = (1U << 3), /* cmd stop-on-err enable */ | 256 | PCS_CMD_STOP_ERR = (1U << 3), /* cmd stop-on-err enable */ |
@@ -246,6 +265,8 @@ enum hw_register_bits { | |||
246 | PORT_DEV_SMP_INIT = (1U << 10), | 265 | PORT_DEV_SMP_INIT = (1U << 10), |
247 | PORT_DEV_STP_INIT = (1U << 9), | 266 | PORT_DEV_STP_INIT = (1U << 9), |
248 | PORT_PHY_ID_MASK = (0xFFU << 24), | 267 | PORT_PHY_ID_MASK = (0xFFU << 24), |
268 | PORT_SSP_TRGT_MASK = (0x1U << 19), | ||
269 | PORT_SSP_INIT_MASK = (0x1U << 11), | ||
249 | PORT_DEV_TRGT_MASK = (0x7U << 17), | 270 | PORT_DEV_TRGT_MASK = (0x7U << 17), |
250 | PORT_DEV_INIT_MASK = (0x7U << 9), | 271 | PORT_DEV_INIT_MASK = (0x7U << 9), |
251 | PORT_DEV_TYPE_MASK = (0x7U << 0), | 272 | PORT_DEV_TYPE_MASK = (0x7U << 0), |
@@ -283,21 +304,30 @@ enum sas_sata_config_port_regs { | |||
283 | PHYR_ATT_ADDR_HI = 0x14, /* attached dev SAS addr (high) */ | 304 | PHYR_ATT_ADDR_HI = 0x14, /* attached dev SAS addr (high) */ |
284 | PHYR_SATA_CTL = 0x18, /* SATA control */ | 305 | PHYR_SATA_CTL = 0x18, /* SATA control */ |
285 | PHYR_PHY_STAT = 0x1C, /* PHY status */ | 306 | PHYR_PHY_STAT = 0x1C, /* PHY status */ |
286 | PHYR_SATA_SIG0 = 0x20, /*port SATA signature FIS(Byte 0-3) */ | 307 | PHYR_SATA_SIG0 = 0x20, /*port SATA signature FIS(Byte 0-3) */ |
287 | PHYR_SATA_SIG1 = 0x24, /*port SATA signature FIS(Byte 4-7) */ | 308 | PHYR_SATA_SIG1 = 0x24, /*port SATA signature FIS(Byte 4-7) */ |
288 | PHYR_SATA_SIG2 = 0x28, /*port SATA signature FIS(Byte 8-11) */ | 309 | PHYR_SATA_SIG2 = 0x28, /*port SATA signature FIS(Byte 8-11) */ |
289 | PHYR_SATA_SIG3 = 0x2c, /*port SATA signature FIS(Byte 12-15) */ | 310 | PHYR_SATA_SIG3 = 0x2c, /*port SATA signature FIS(Byte 12-15) */ |
290 | PHYR_R_ERR_COUNT = 0x30, /* port R_ERR count register */ | 311 | PHYR_R_ERR_COUNT = 0x30, /* port R_ERR count register */ |
291 | PHYR_CRC_ERR_COUNT = 0x34, /* port CRC error count register */ | 312 | PHYR_CRC_ERR_COUNT = 0x34, /* port CRC error count register */ |
292 | PHYR_WIDE_PORT = 0x38, /* wide port participating */ | 313 | PHYR_WIDE_PORT = 0x38, /* wide port participating */ |
293 | PHYR_CURRENT0 = 0x80, /* current connection info 0 */ | 314 | PHYR_CURRENT0 = 0x80, /* current connection info 0 */ |
294 | PHYR_CURRENT1 = 0x84, /* current connection info 1 */ | 315 | PHYR_CURRENT1 = 0x84, /* current connection info 1 */ |
295 | PHYR_CURRENT2 = 0x88, /* current connection info 2 */ | 316 | PHYR_CURRENT2 = 0x88, /* current connection info 2 */ |
296 | }; | 317 | CONFIG_ID_FRAME0 = 0x100, /* Port device ID frame register 0 */ |
297 | 318 | CONFIG_ID_FRAME1 = 0x104, /* Port device ID frame register 1 */ | |
298 | enum mvs_info_flags { | 319 | CONFIG_ID_FRAME2 = 0x108, /* Port device ID frame register 2 */ |
299 | MVF_MSI = (1U << 0), /* MSI is enabled */ | 320 | CONFIG_ID_FRAME3 = 0x10c, /* Port device ID frame register 3 */ |
300 | MVF_PHY_PWR_FIX = (1U << 1), /* bug workaround */ | 321 | CONFIG_ID_FRAME4 = 0x110, /* Port device ID frame register 4 */ |
322 | CONFIG_ID_FRAME5 = 0x114, /* Port device ID frame register 5 */ | ||
323 | CONFIG_ID_FRAME6 = 0x118, /* Port device ID frame register 6 */ | ||
324 | CONFIG_ATT_ID_FRAME0 = 0x11c, /* attached ID frame register 0 */ | ||
325 | CONFIG_ATT_ID_FRAME1 = 0x120, /* attached ID frame register 1 */ | ||
326 | CONFIG_ATT_ID_FRAME2 = 0x124, /* attached ID frame register 2 */ | ||
327 | CONFIG_ATT_ID_FRAME3 = 0x128, /* attached ID frame register 3 */ | ||
328 | CONFIG_ATT_ID_FRAME4 = 0x12c, /* attached ID frame register 4 */ | ||
329 | CONFIG_ATT_ID_FRAME5 = 0x130, /* attached ID frame register 5 */ | ||
330 | CONFIG_ATT_ID_FRAME6 = 0x134, /* attached ID frame register 6 */ | ||
301 | }; | 331 | }; |
302 | 332 | ||
303 | enum sas_cmd_port_registers { | 333 | enum sas_cmd_port_registers { |
@@ -305,11 +335,11 @@ enum sas_cmd_port_registers { | |||
305 | CMD_CMWK_OOB_DET = 0x104, /* COMWAKE OOB detect register */ | 335 | CMD_CMWK_OOB_DET = 0x104, /* COMWAKE OOB detect register */ |
306 | CMD_CMSAS_OOB_DET = 0x108, /* COMSAS OOB detect register */ | 336 | CMD_CMSAS_OOB_DET = 0x108, /* COMSAS OOB detect register */ |
307 | CMD_BRST_OOB_DET = 0x10c, /* burst OOB detect register */ | 337 | CMD_BRST_OOB_DET = 0x10c, /* burst OOB detect register */ |
308 | CMD_OOB_SPACE = 0x110, /* OOB space control register */ | 338 | CMD_OOB_SPACE = 0x110, /* OOB space control register */ |
309 | CMD_OOB_BURST = 0x114, /* OOB burst control register */ | 339 | CMD_OOB_BURST = 0x114, /* OOB burst control register */ |
310 | CMD_PHY_TIMER = 0x118, /* PHY timer control register */ | 340 | CMD_PHY_TIMER = 0x118, /* PHY timer control register */ |
311 | CMD_PHY_CONFIG0 = 0x11c, /* PHY config register 0 */ | 341 | CMD_PHY_CONFIG0 = 0x11c, /* PHY config register 0 */ |
312 | CMD_PHY_CONFIG1 = 0x120, /* PHY config register 1 */ | 342 | CMD_PHY_CONFIG1 = 0x120, /* PHY config register 1 */ |
313 | CMD_SAS_CTL0 = 0x124, /* SAS control register 0 */ | 343 | CMD_SAS_CTL0 = 0x124, /* SAS control register 0 */ |
314 | CMD_SAS_CTL1 = 0x128, /* SAS control register 1 */ | 344 | CMD_SAS_CTL1 = 0x128, /* SAS control register 1 */ |
315 | CMD_SAS_CTL2 = 0x12c, /* SAS control register 2 */ | 345 | CMD_SAS_CTL2 = 0x12c, /* SAS control register 2 */ |
@@ -318,9 +348,9 @@ enum sas_cmd_port_registers { | |||
318 | CMD_PL_TIMER = 0x138, /* PL timer register */ | 348 | CMD_PL_TIMER = 0x138, /* PL timer register */ |
319 | CMD_WD_TIMER = 0x13c, /* WD timer register */ | 349 | CMD_WD_TIMER = 0x13c, /* WD timer register */ |
320 | CMD_PORT_SEL_COUNT = 0x140, /* port selector count register */ | 350 | CMD_PORT_SEL_COUNT = 0x140, /* port selector count register */ |
321 | CMD_APP_MEM_CTL = 0x144, /* Application Memory Control */ | 351 | CMD_APP_MEM_CTL = 0x144, /* Application Memory Control */ |
322 | CMD_XOR_MEM_CTL = 0x148, /* XOR Block Memory Control */ | 352 | CMD_XOR_MEM_CTL = 0x148, /* XOR Block Memory Control */ |
323 | CMD_DMA_MEM_CTL = 0x14c, /* DMA Block Memory Control */ | 353 | CMD_DMA_MEM_CTL = 0x14c, /* DMA Block Memory Control */ |
324 | CMD_PORT_MEM_CTL0 = 0x150, /* Port Memory Control 0 */ | 354 | CMD_PORT_MEM_CTL0 = 0x150, /* Port Memory Control 0 */ |
325 | CMD_PORT_MEM_CTL1 = 0x154, /* Port Memory Control 1 */ | 355 | CMD_PORT_MEM_CTL1 = 0x154, /* Port Memory Control 1 */ |
326 | CMD_SATA_PORT_MEM_CTL0 = 0x158, /* SATA Port Memory Control 0 */ | 356 | CMD_SATA_PORT_MEM_CTL0 = 0x158, /* SATA Port Memory Control 0 */ |
@@ -353,27 +383,25 @@ enum sas_cmd_port_registers { | |||
353 | CMD_PND_FIFO_CTL1 = 0x1C4, /* Pending FIFO Control 1 */ | 383 | CMD_PND_FIFO_CTL1 = 0x1C4, /* Pending FIFO Control 1 */ |
354 | }; | 384 | }; |
355 | 385 | ||
356 | enum pci_cfg_register_bits { | 386 | enum mvs_info_flags { |
357 | PCTL_PWR_ON = (0xFU << 24), | 387 | MVF_MSI = (1U << 0), /* MSI is enabled */ |
358 | PCTL_OFF = (0xFU << 12), | 388 | MVF_PHY_PWR_FIX = (1U << 1), /* bug workaround */ |
359 | PRD_REQ_SIZE = (0x4000), | 389 | MVF_FLAG_SOC = (1U << 2), /* SoC integrated controllers */ |
360 | PRD_REQ_MASK = (0x00007000), | ||
361 | }; | 390 | }; |
362 | 391 | ||
363 | enum nvram_layout_offsets { | 392 | enum mvs_event_flags { |
364 | NVR_SIG = 0x00, /* 0xAA, 0x55 */ | 393 | PHY_PLUG_EVENT = (3U), |
365 | NVR_SAS_ADDR = 0x02, /* 8-byte SAS address */ | 394 | PHY_PLUG_IN = (1U << 0), /* phy plug in */ |
395 | PHY_PLUG_OUT = (1U << 1), /* phy plug out */ | ||
366 | }; | 396 | }; |
367 | 397 | ||
368 | enum chip_flavors { | 398 | enum mvs_port_type { |
369 | chip_6320, | 399 | PORT_TGT_MASK = (1U << 5), |
370 | chip_6440, | 400 | PORT_INIT_PORT = (1U << 4), |
371 | chip_6480, | 401 | PORT_TGT_PORT = (1U << 3), |
372 | }; | 402 | PORT_INIT_TGT_PORT = (PORT_INIT_PORT | PORT_TGT_PORT), |
373 | 403 | PORT_TYPE_SAS = (1U << 1), | |
374 | enum port_type { | 404 | PORT_TYPE_SATA = (1U << 0), |
375 | PORT_TYPE_SAS = (1L << 1), | ||
376 | PORT_TYPE_SATA = (1L << 0), | ||
377 | }; | 405 | }; |
378 | 406 | ||
379 | /* Command Table Format */ | 407 | /* Command Table Format */ |
@@ -438,4 +466,37 @@ enum error_info_rec_2 { | |||
438 | USR_BLK_NM = (1U << 0), /* User Block Number */ | 466 | USR_BLK_NM = (1U << 0), /* User Block Number */ |
439 | }; | 467 | }; |
440 | 468 | ||
469 | enum pci_cfg_register_bits { | ||
470 | PCTL_PWR_OFF = (0xFU << 24), | ||
471 | PCTL_COM_ON = (0xFU << 20), | ||
472 | PCTL_LINK_RST = (0xFU << 16), | ||
473 | PCTL_LINK_OFFS = (16), | ||
474 | PCTL_PHY_DSBL = (0xFU << 12), | ||
475 | PCTL_PHY_DSBL_OFFS = (12), | ||
476 | PRD_REQ_SIZE = (0x4000), | ||
477 | PRD_REQ_MASK = (0x00007000), | ||
478 | PLS_NEG_LINK_WD = (0x3FU << 4), | ||
479 | PLS_NEG_LINK_WD_OFFS = 4, | ||
480 | PLS_LINK_SPD = (0x0FU << 0), | ||
481 | PLS_LINK_SPD_OFFS = 0, | ||
482 | }; | ||
483 | |||
484 | enum open_frame_protocol { | ||
485 | PROTOCOL_SMP = 0x0, | ||
486 | PROTOCOL_SSP = 0x1, | ||
487 | PROTOCOL_STP = 0x2, | ||
488 | }; | ||
489 | |||
490 | /* define for response frame datapres field */ | ||
491 | enum datapres_field { | ||
492 | NO_DATA = 0, | ||
493 | RESPONSE_DATA = 1, | ||
494 | SENSE_DATA = 2, | ||
495 | }; | ||
496 | |||
497 | /* define task management IU */ | ||
498 | struct mvs_tmf_task{ | ||
499 | u8 tmf; | ||
500 | u16 tag_of_task_to_be_managed; | ||
501 | }; | ||
441 | #endif | 502 | #endif |