diff options
author | Jeff Skirvin <jeffrey.d.skirvin@intel.com> | 2012-01-04 01:32:49 -0800 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-01-16 11:43:04 +0400 |
commit | 9fee607f0b29adabd72265a847b8e421dff10d66 (patch) | |
tree | 7442c82b8e363a7aa1e87955e9619cf8e949cf3a /drivers/scsi/isci/probe_roms.h | |
parent | 594e566ae5985e0cc3185ac21509a86e90aad577 (diff) | |
download | talos-obmc-linux-9fee607f0b29adabd72265a847b8e421dff10d66.tar.gz talos-obmc-linux-9fee607f0b29adabd72265a847b8e421dff10d66.zip |
[SCSI] isci: oem parameter format v1.3 (cable select)
v1.3 allows the attenuation of the attached cables to be specified to
the driver in terms of 'short', 'medium', and 'long' (see probe_roms.h).
These settings (per phy) are retrieved from the platform oem-parameters
(BIOS rom) or via a module parameter override.
Reviewed-by: Jiangbi Liu <jiangbi.liu@intel.com>
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/isci/probe_roms.h')
-rw-r--r-- | drivers/scsi/isci/probe_roms.h | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/drivers/scsi/isci/probe_roms.h b/drivers/scsi/isci/probe_roms.h index 42dd05414f3b..bb0e9d4d97c9 100644 --- a/drivers/scsi/isci/probe_roms.h +++ b/drivers/scsi/isci/probe_roms.h @@ -193,7 +193,8 @@ struct isci_oem_hdr { #define ISCI_ROM_VER_1_0 0x10 #define ISCI_ROM_VER_1_1 0x11 -#define ISCI_ROM_VER_LATEST ISCI_ROM_VER_1_1 +#define ISCI_ROM_VER_1_3 0x13 +#define ISCI_ROM_VER_LATEST ISCI_ROM_VER_1_3 /* Allowed PORT configuration modes APC Automatic PORT configuration mode is * defined by the OEM configuration parameters providing no PHY_MASK parameters @@ -270,7 +271,40 @@ struct sci_oem_params { }; uint8_t do_enable_ssc; }; - uint8_t reserved; + /* + * This field indicates length of the SAS/SATA cable between + * host and device. + * This field is used make relationship between analog + * parameters of the phy in the silicon and length of the cable. + * Supported cable attenuation levels: + * "short"- up to 3m, "medium"-3m to 6m, and "long"- more than + * 6m. + * + * This is bit mask field: + * + * BIT: (MSB) 7 6 5 4 + * ASSIGNMENT: <phy3><phy2><phy1><phy0> - Medium cable + * length assignment + * BIT: 3 2 1 0 (LSB) + * ASSIGNMENT: <phy3><phy2><phy1><phy0> - Long cable length + * assignment + * + * BITS 7-4 are set when the cable length is assigned to medium + * BITS 3-0 are set when the cable length is assigned to long + * + * The BIT positions are clear when the cable length is + * assigned to short. + * + * Setting the bits for both long and medium cable length is + * undefined. + * + * A value of 0x84 would assign + * phy3 - medium + * phy2 - long + * phy1 - short + * phy0 - short + */ + uint8_t cable_selection_mask; } controller; struct { |