aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/probe_roms.h
diff options
context:
space:
mode:
authorDave Jiang <dave.jiang@intel.com>2012-01-04 04:32:44 -0500
committerJames Bottomley <JBottomley@Parallels.com>2012-01-16 02:42:00 -0500
commit594e566ae5985e0cc3185ac21509a86e90aad577 (patch)
treef53db9f48084fea7c553077e60e03e7cd130c21a /drivers/scsi/isci/probe_roms.h
parentafd13a1f2b05157c7621d87dfe89ea6ea9061bd8 (diff)
[SCSI] isci: oem parameter format v1.1 (ssc select)
v1.1 allows finer grained tuning of the SSC (spread-spectrum-clocking) settings for SAS and SATA. See notes in probe_roms.h Signed-off-by: Dave Jiang <dave.jiang@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.h53
1 files changed, 51 insertions, 2 deletions
diff --git a/drivers/scsi/isci/probe_roms.h b/drivers/scsi/isci/probe_roms.h
index 2c75248ca326..42dd05414f3b 100644
--- a/drivers/scsi/isci/probe_roms.h
+++ b/drivers/scsi/isci/probe_roms.h
@@ -152,7 +152,7 @@ struct sci_user_parameters {
152#define MAX_CONCURRENT_DEVICE_SPIN_UP_COUNT 4 152#define MAX_CONCURRENT_DEVICE_SPIN_UP_COUNT 4
153 153
154struct sci_oem_params; 154struct sci_oem_params;
155int sci_oem_parameters_validate(struct sci_oem_params *oem); 155int sci_oem_parameters_validate(struct sci_oem_params *oem, u8 version);
156 156
157struct isci_orom; 157struct isci_orom;
158struct isci_orom *isci_request_oprom(struct pci_dev *pdev); 158struct isci_orom *isci_request_oprom(struct pci_dev *pdev);
@@ -191,6 +191,10 @@ struct isci_oem_hdr {
191 0x1a, 0x04, 0xc6) 191 0x1a, 0x04, 0xc6)
192#define ISCI_EFI_VAR_NAME "RstScuO" 192#define ISCI_EFI_VAR_NAME "RstScuO"
193 193
194#define ISCI_ROM_VER_1_0 0x10
195#define ISCI_ROM_VER_1_1 0x11
196#define ISCI_ROM_VER_LATEST ISCI_ROM_VER_1_1
197
194/* Allowed PORT configuration modes APC Automatic PORT configuration mode is 198/* Allowed PORT configuration modes APC Automatic PORT configuration mode is
195 * defined by the OEM configuration parameters providing no PHY_MASK parameters 199 * defined by the OEM configuration parameters providing no PHY_MASK parameters
196 * for any PORT. i.e. There are no phys assigned to any of the ports at start. 200 * for any PORT. i.e. There are no phys assigned to any of the ports at start.
@@ -220,7 +224,52 @@ struct sci_oem_params {
220 struct { 224 struct {
221 uint8_t mode_type; 225 uint8_t mode_type;
222 uint8_t max_concurr_spin_up; 226 uint8_t max_concurr_spin_up;
223 uint8_t do_enable_ssc; 227 /*
228 * This bitfield indicates the OEM's desired default Tx
229 * Spread Spectrum Clocking (SSC) settings for SATA and SAS.
230 * NOTE: Default SSC Modulation Frequency is 31.5KHz.
231 */
232 union {
233 struct {
234 /*
235 * NOTE: Max spread for SATA is +0 / -5000 PPM.
236 * Down-spreading SSC (only method allowed for SATA):
237 * SATA SSC Tx Disabled = 0x0
238 * SATA SSC Tx at +0 / -1419 PPM Spread = 0x2
239 * SATA SSC Tx at +0 / -2129 PPM Spread = 0x3
240 * SATA SSC Tx at +0 / -4257 PPM Spread = 0x6
241 * SATA SSC Tx at +0 / -4967 PPM Spread = 0x7
242 */
243 uint8_t ssc_sata_tx_spread_level:4;
244 /*
245 * SAS SSC Tx Disabled = 0x0
246 *
247 * NOTE: Max spread for SAS down-spreading +0 /
248 * -2300 PPM
249 * Down-spreading SSC:
250 * SAS SSC Tx at +0 / -1419 PPM Spread = 0x2
251 * SAS SSC Tx at +0 / -2129 PPM Spread = 0x3
252 *
253 * NOTE: Max spread for SAS center-spreading +2300 /
254 * -2300 PPM
255 * Center-spreading SSC:
256 * SAS SSC Tx at +1064 / -1064 PPM Spread = 0x3
257 * SAS SSC Tx at +2129 / -2129 PPM Spread = 0x6
258 */
259 uint8_t ssc_sas_tx_spread_level:3;
260 /*
261 * NOTE: Refer to the SSC section of the SAS 2.x
262 * Specification for proper setting of this field.
263 * For standard SAS Initiator SAS PHY operation it
264 * should be 0 for Down-spreading.
265 * SAS SSC Tx spread type:
266 * Down-spreading SSC = 0
267 * Center-spreading SSC = 1
268 */
269 uint8_t ssc_sas_tx_type:1;
270 };
271 uint8_t do_enable_ssc;
272 };
224 uint8_t reserved; 273 uint8_t reserved;
225 } controller; 274 } controller;
226 275