diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-03-11 13:43:57 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 06:55:31 -0400 |
commit | 4711ba10b13891edf228944a9d0a21dfe7fe90f0 (patch) | |
tree | c846eb029eb2bc827a614df963b00aa412b95956 /drivers/scsi/isci/firmware/create_fw.h | |
parent | 2e8320f751030a12efc3e64ee857bfa4647f81fe (diff) |
isci: fix oem parameter initialization and mode detection
1/ Since commit 858d4aa7 "isci: Move firmware loading to per PCI device" we have
been silently falling back to built-in defaults for the parameter settings by
skipping the call to scic_oem_parameters_set().
2/ The afe parameters from the firmware were not being honored
3/ The latest oem parameter definition flips the mode_type values which are
now 0: for APC 1: for MPC. For APC we need to make sure all the phys
default to the same address otherwise strict_wide_ports will cause duplicate
domains.
4/ Fix up the driver announcement to indicate the source of the
parameters.
5/ Fix up the sas addresses to be unique per controller (in the fallback case)
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/firmware/create_fw.h')
-rw-r--r-- | drivers/scsi/isci/firmware/create_fw.h | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/drivers/scsi/isci/firmware/create_fw.h b/drivers/scsi/isci/firmware/create_fw.h index 788a8de0c2bc..9f9afbd97d69 100644 --- a/drivers/scsi/isci/firmware/create_fw.h +++ b/drivers/scsi/isci/firmware/create_fw.h | |||
@@ -25,14 +25,37 @@ static const int num_elements = 2; | |||
25 | * if there is a port/phy on which you do not wish to override the default | 25 | * if there is a port/phy on which you do not wish to override the default |
26 | * values, use the value assigned to UNINIT_PARAM (255). | 26 | * values, use the value assigned to UNINIT_PARAM (255). |
27 | */ | 27 | */ |
28 | |||
28 | /* discovery mode type (port auto config mode by default ) */ | 29 | /* discovery mode type (port auto config mode by default ) */ |
30 | |||
31 | /* | ||
32 | * if there is a port/phy on which you do not wish to override the default | ||
33 | * values, use the value "0000000000000000". SAS address of zero's is | ||
34 | * considered invalid and will not be used. | ||
35 | */ | ||
29 | #ifdef MPC | 36 | #ifdef MPC |
30 | static const int mode_type = SCIC_PORT_MANUAL_CONFIGURATION_MODE; | 37 | static const int mode_type = SCIC_PORT_MANUAL_CONFIGURATION_MODE; |
31 | static const __u8 phy_mask[2][4] = { {1, 2, 4, 8}, | 38 | static const __u8 phy_mask[2][4] = { {1, 2, 4, 8}, |
32 | {1, 2, 4, 8} }; | 39 | {1, 2, 4, 8} }; |
40 | static const unsigned long long sas_addr[2][4] = { { 0x5FCFFFFFF0000001ULL, | ||
41 | 0x5FCFFFFFF0000002ULL, | ||
42 | 0x5FCFFFFFF0000003ULL, | ||
43 | 0x5FCFFFFFF0000004ULL }, | ||
44 | { 0x5FCFFFFFF0000005ULL, | ||
45 | 0x5FCFFFFFF0000006ULL, | ||
46 | 0x5FCFFFFFF0000007ULL, | ||
47 | 0x5FCFFFFFF0000008ULL } }; | ||
33 | #else /* APC (default) */ | 48 | #else /* APC (default) */ |
34 | static const int mode_type = SCIC_PORT_AUTOMATIC_CONFIGURATION_MODE; | 49 | static const int mode_type = SCIC_PORT_AUTOMATIC_CONFIGURATION_MODE; |
35 | static const __u8 phy_mask[2][4]; | 50 | static const __u8 phy_mask[2][4]; |
51 | static const unsigned long long sas_addr[2][4] = { { 0x5FCFFFFF00000001ULL, | ||
52 | 0x5FCFFFFF00000001ULL, | ||
53 | 0x5FCFFFFF00000001ULL, | ||
54 | 0x5FCFFFFF00000001ULL }, | ||
55 | { 0x5FCFFFFF00000002ULL, | ||
56 | 0x5FCFFFFF00000002ULL, | ||
57 | 0x5FCFFFFF00000002ULL, | ||
58 | 0x5FCFFFFF00000002ULL } }; | ||
36 | #endif | 59 | #endif |
37 | 60 | ||
38 | /* Maximum number of concurrent device spin up */ | 61 | /* Maximum number of concurrent device spin up */ |
@@ -47,22 +70,8 @@ static const unsigned int afe_tx_amp_control1 = 0x000e7c03; | |||
47 | static const unsigned int afe_tx_amp_control2 = 0x000e7c03; | 70 | static const unsigned int afe_tx_amp_control2 = 0x000e7c03; |
48 | static const unsigned int afe_tx_amp_control3 = 0x000e7c03; | 71 | static const unsigned int afe_tx_amp_control3 = 0x000e7c03; |
49 | 72 | ||
50 | /* | ||
51 | * if there is a port/phy on which you do not wish to override the default | ||
52 | * values, use the value "0000000000000000". SAS address of zero's is | ||
53 | * considered invalid and will not be used. | ||
54 | */ | ||
55 | static const unsigned long long sas_addr[2][4] = { { 0x5FCFFFFFF0000000ULL, | ||
56 | 0x5FCFFFFFF1000000ULL, | ||
57 | 0x5FCFFFFFF2000000ULL, | ||
58 | 0x5FCFFFFFF3000000ULL }, | ||
59 | { 0x5FCFFFFFF4000000ULL, | ||
60 | 0x5FCFFFFFF5000000ULL, | ||
61 | 0x5FCFFFFFF6000000ULL, | ||
62 | 0x5FCFFFFFF7000000ULL } }; | ||
63 | |||
64 | static const char blob_name[] = "isci_firmware.bin"; | 73 | static const char blob_name[] = "isci_firmware.bin"; |
65 | static const char sig[] = "ISCUOEMB"; | 74 | static const char sig[] = "ISCUOEMB"; |
66 | static const unsigned char version = 1; | 75 | static const unsigned char version = 0x10; |
67 | 76 | ||
68 | #endif | 77 | #endif |