diff options
author | Xiangliang Yu <yuxiangl@marvell.com> | 2011-05-24 10:28:31 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-07-26 02:30:06 -0400 |
commit | f1f82a919d7fff21ee8c0ef4b9731fb38f2a65db (patch) | |
tree | be6910107145169f0034b6d1551b574303be0b80 /drivers/scsi/mvsas/mv_sas.h | |
parent | 534ff10104427ccad071ef87ae7017d47d08e50b (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.h | 68 |
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 */ | ||
254 | struct 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 | |||
271 | struct 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 | */ | ||
285 | struct 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 | |||
253 | struct mvs_slot_info { | 320 | struct 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; |