aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mvsas/mv_sas.h
diff options
context:
space:
mode:
authorXiangliang Yu <yuxiangl@marvell.com>2011-05-24 10:28:31 -0400
committerJames Bottomley <JBottomley@Parallels.com>2011-07-26 02:30:06 -0400
commitf1f82a919d7fff21ee8c0ef4b9731fb38f2a65db (patch)
treebe6910107145169f0034b6d1551b574303be0b80 /drivers/scsi/mvsas/mv_sas.h
parent534ff10104427ccad071ef87ae7017d47d08e50b (diff)
[SCSI] mvsas: add support for 94xx phy tuning and multiple revisions
Add 94xx phy tuning to aid manufacturing. Add support for 94xx multiple revisions: A0, B0, C0, C1, C2. Signed-off-by: Xiangliang Yu <yuxiangl@marvell.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/mvsas/mv_sas.h')
-rw-r--r--drivers/scsi/mvsas/mv_sas.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/drivers/scsi/mvsas/mv_sas.h b/drivers/scsi/mvsas/mv_sas.h
index f96100d7aee1..ccd622f7f841 100644
--- a/drivers/scsi/mvsas/mv_sas.h
+++ b/drivers/scsi/mvsas/mv_sas.h
@@ -250,6 +250,73 @@ struct mvs_device {
250 u16 reserved; 250 u16 reserved;
251}; 251};
252 252
253/* Generate PHY tunning parameters */
254struct phy_tuning {
255 /* 1 bit, transmitter emphasis enable */
256 u8 trans_emp_en:1;
257 /* 4 bits, transmitter emphasis amplitude */
258 u8 trans_emp_amp:4;
259 /* 3 bits, reserved space */
260 u8 Reserved_2bit_1:3;
261 /* 5 bits, transmitter amplitude */
262 u8 trans_amp:5;
263 /* 2 bits, transmitter amplitude adjust */
264 u8 trans_amp_adj:2;
265 /* 1 bit, reserved space */
266 u8 resv_2bit_2:1;
267 /* 2 bytes, reserved space */
268 u8 reserved[2];
269};
270
271struct ffe_control {
272 /* 4 bits, FFE Capacitor Select (value range 0~F) */
273 u8 ffe_cap_sel:4;
274 /* 3 bits, FFE Resistor Select (value range 0~7) */
275 u8 ffe_rss_sel:3;
276 /* 1 bit reserve*/
277 u8 reserved:1;
278};
279
280/*
281 * HBA_Info_Page is saved in Flash/NVRAM, total 256 bytes.
282 * The data area is valid only Signature="MRVL".
283 * If any member fills with 0xFF, the member is invalid.
284 */
285struct hba_info_page {
286 /* Dword 0 */
287 /* 4 bytes, structure signature,should be "MRVL" at first initial */
288 u8 signature[4];
289
290 /* Dword 1-13 */
291 u32 reserved1[13];
292
293 /* Dword 14-29 */
294 /* 64 bytes, SAS address for each port */
295 u64 sas_addr[8];
296
297 /* Dword 30-31 */
298 /* 8 bytes for vanir 8 port PHY FFE seeting
299 * BIT 0~3 : FFE Capacitor select(value range 0~F)
300 * BIT 4~6 : FFE Resistor select(value range 0~7)
301 * BIT 7: reserve.
302 */
303
304 struct ffe_control ffe_ctl[8];
305 /* Dword 32 -43 */
306 u32 reserved2[12];
307
308 /* Dword 44-45 */
309 /* 8 bytes, 0: 1.5G, 1: 3.0G, should be 0x01 at first initial */
310 u8 phy_rate[8];
311
312 /* Dword 46-53 */
313 /* 32 bytes, PHY tuning parameters for each PHY*/
314 struct phy_tuning phy_tuning[8];
315
316 /* Dword 54-63 */
317 u32 reserved3[10];
318}; /* total 256 bytes */
319
253struct mvs_slot_info { 320struct mvs_slot_info {
254 struct list_head entry; 321 struct list_head entry;
255 union { 322 union {
@@ -338,6 +405,7 @@ struct mvs_info {
338 u32 flashsectSize; 405 u32 flashsectSize;
339 406
340 void *addon; 407 void *addon;
408 struct hba_info_page hba_info_param;
341 struct mvs_device devices[MVS_MAX_DEVICES]; 409 struct mvs_device devices[MVS_MAX_DEVICES];
342#ifndef DISABLE_HOTPLUG_DMA_FIX 410#ifndef DISABLE_HOTPLUG_DMA_FIX
343 void *bulk_buffer; 411 void *bulk_buffer;