diff options
Diffstat (limited to 'drivers/scsi/isci/probe_roms.h')
-rw-r--r-- | drivers/scsi/isci/probe_roms.h | 95 |
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 | ||
154 | struct sci_oem_params; | 154 | struct sci_oem_params; |
155 | int sci_oem_parameters_validate(struct sci_oem_params *oem, u8 version); | 155 | int sci_oem_parameters_validate(struct sci_oem_params *oem); |
156 | 156 | ||
157 | struct isci_orom; | 157 | struct isci_orom; |
158 | struct isci_orom *isci_request_oprom(struct pci_dev *pdev); | 158 | struct isci_orom *isci_request_oprom(struct pci_dev *pdev); |
159 | enum sci_status isci_parse_oem_parameters(struct sci_oem_params *oem, | ||
160 | struct isci_orom *orom, int scu_index); | ||
159 | struct isci_orom *isci_request_firmware(struct pci_dev *pdev, const struct firmware *fw); | 161 | struct isci_orom *isci_request_firmware(struct pci_dev *pdev, const struct firmware *fw); |
160 | struct isci_orom *isci_get_efi_var(struct pci_dev *pdev); | 162 | struct 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 { | |||
222 | struct sci_oem_params { | 219 | struct 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 { |