aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci/probe_roms.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/isci/probe_roms.h')
-rw-r--r--drivers/scsi/isci/probe_roms.h95
1 files changed, 7 insertions, 88 deletions
diff --git a/drivers/scsi/isci/probe_roms.h b/drivers/scsi/isci/probe_roms.h
index e08b578241f..dc007e692f4 100644
--- a/drivers/scsi/isci/probe_roms.h
+++ b/drivers/scsi/isci/probe_roms.h
@@ -112,7 +112,7 @@ struct sci_user_parameters {
112 * This field specifies the maximum number of direct attached devices 112 * This field specifies the maximum number of direct attached devices
113 * that can have power supplied to them simultaneously. 113 * that can have power supplied to them simultaneously.
114 */ 114 */
115 u8 max_concurr_spinup; 115 u8 max_number_concurrent_device_spin_up;
116 116
117 /** 117 /**
118 * This field specifies the number of seconds to allow a phy to consume 118 * This field specifies the number of seconds to allow a phy to consume
@@ -152,10 +152,12 @@ 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, u8 version); 155int sci_oem_parameters_validate(struct sci_oem_params *oem);
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);
159enum sci_status isci_parse_oem_parameters(struct sci_oem_params *oem,
160 struct isci_orom *orom, int scu_index);
159struct isci_orom *isci_request_firmware(struct pci_dev *pdev, const struct firmware *fw); 161struct isci_orom *isci_request_firmware(struct pci_dev *pdev, const struct firmware *fw);
160struct isci_orom *isci_get_efi_var(struct pci_dev *pdev); 162struct isci_orom *isci_get_efi_var(struct pci_dev *pdev);
161 163
@@ -189,11 +191,6 @@ struct isci_oem_hdr {
189 0x1a, 0x04, 0xc6) 191 0x1a, 0x04, 0xc6)
190#define ISCI_EFI_VAR_NAME "RstScuO" 192#define ISCI_EFI_VAR_NAME "RstScuO"
191 193
192#define ISCI_ROM_VER_1_0 0x10
193#define ISCI_ROM_VER_1_1 0x11
194#define ISCI_ROM_VER_1_3 0x13
195#define ISCI_ROM_VER_LATEST ISCI_ROM_VER_1_3
196
197/* Allowed PORT configuration modes APC Automatic PORT configuration mode is 194/* Allowed PORT configuration modes APC Automatic PORT configuration mode is
198 * defined by the OEM configuration parameters providing no PHY_MASK parameters 195 * defined by the OEM configuration parameters providing no PHY_MASK parameters
199 * for any PORT. i.e. There are no phys assigned to any of the ports at start. 196 * for any PORT. i.e. There are no phys assigned to any of the ports at start.
@@ -222,87 +219,9 @@ struct sci_bios_oem_param_block_hdr {
222struct sci_oem_params { 219struct sci_oem_params {
223 struct { 220 struct {
224 uint8_t mode_type; 221 uint8_t mode_type;
225 uint8_t max_concurr_spin_up; 222 uint8_t max_concurrent_dev_spin_up;
226 /* 223 uint8_t do_enable_ssc;
227 * This bitfield indicates the OEM's desired default Tx 224 uint8_t reserved;
228 * Spread Spectrum Clocking (SSC) settings for SATA and SAS.
229 * NOTE: Default SSC Modulation Frequency is 31.5KHz.
230 */
231 union {
232 struct {
233 /*
234 * NOTE: Max spread for SATA is +0 / -5000 PPM.
235 * Down-spreading SSC (only method allowed for SATA):
236 * SATA SSC Tx Disabled = 0x0
237 * SATA SSC Tx at +0 / -1419 PPM Spread = 0x2
238 * SATA SSC Tx at +0 / -2129 PPM Spread = 0x3
239 * SATA SSC Tx at +0 / -4257 PPM Spread = 0x6
240 * SATA SSC Tx at +0 / -4967 PPM Spread = 0x7
241 */
242 uint8_t ssc_sata_tx_spread_level:4;
243 /*
244 * SAS SSC Tx Disabled = 0x0
245 *
246 * NOTE: Max spread for SAS down-spreading +0 /
247 * -2300 PPM
248 * Down-spreading SSC:
249 * SAS SSC Tx at +0 / -1419 PPM Spread = 0x2
250 * SAS SSC Tx at +0 / -2129 PPM Spread = 0x3
251 *
252 * NOTE: Max spread for SAS center-spreading +2300 /
253 * -2300 PPM
254 * Center-spreading SSC:
255 * SAS SSC Tx at +1064 / -1064 PPM Spread = 0x3
256 * SAS SSC Tx at +2129 / -2129 PPM Spread = 0x6
257 */
258 uint8_t ssc_sas_tx_spread_level:3;
259 /*
260 * NOTE: Refer to the SSC section of the SAS 2.x
261 * Specification for proper setting of this field.
262 * For standard SAS Initiator SAS PHY operation it
263 * should be 0 for Down-spreading.
264 * SAS SSC Tx spread type:
265 * Down-spreading SSC = 0
266 * Center-spreading SSC = 1
267 */
268 uint8_t ssc_sas_tx_type:1;
269 };
270 uint8_t do_enable_ssc;
271 };
272 /*
273 * This field indicates length of the SAS/SATA cable between
274 * host and device.
275 * This field is used make relationship between analog
276 * parameters of the phy in the silicon and length of the cable.
277 * Supported cable attenuation levels:
278 * "short"- up to 3m, "medium"-3m to 6m, and "long"- more than
279 * 6m.
280 *
281 * This is bit mask field:
282 *
283 * BIT: (MSB) 7 6 5 4
284 * ASSIGNMENT: <phy3><phy2><phy1><phy0> - Medium cable
285 * length assignment
286 * BIT: 3 2 1 0 (LSB)
287 * ASSIGNMENT: <phy3><phy2><phy1><phy0> - Long cable length
288 * assignment
289 *
290 * BITS 7-4 are set when the cable length is assigned to medium
291 * BITS 3-0 are set when the cable length is assigned to long
292 *
293 * The BIT positions are clear when the cable length is
294 * assigned to short.
295 *
296 * Setting the bits for both long and medium cable length is
297 * undefined.
298 *
299 * A value of 0x84 would assign
300 * phy3 - medium
301 * phy2 - long
302 * phy1 - short
303 * phy0 - short
304 */
305 uint8_t cable_selection_mask;
306 } controller; 225 } controller;
307 226
308 struct { 227 struct {