|
Lines 233-238
typedef enum {
Link Here
|
| 233 |
AHC_TARGETMODE = 0x20000, /* Has tested target mode support */ |
233 |
AHC_TARGETMODE = 0x20000, /* Has tested target mode support */ |
| 234 |
AHC_MULTIROLE = 0x40000, /* Space for two roles at a time */ |
234 |
AHC_MULTIROLE = 0x40000, /* Space for two roles at a time */ |
| 235 |
AHC_REMOVABLE = 0x80000, /* Hot-Swap supported */ |
235 |
AHC_REMOVABLE = 0x80000, /* Hot-Swap supported */ |
|
|
236 |
AHC_HVD = 0x100000, /* HVD rather than SE */ |
| 236 |
AHC_AIC7770_FE = AHC_FENONE, |
237 |
AHC_AIC7770_FE = AHC_FENONE, |
| 237 |
/* |
238 |
/* |
| 238 |
* The real 7850 does not support Ultra modes, but there are |
239 |
* The real 7850 does not support Ultra modes, but there are |
| 239 |
-- a/drivers/scsi/aic7xxx/aic7xxx_osm.c |
240 |
++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c |
|
Lines 2537-2542
static void ahc_linux_set_iu(struct scsi
Link Here
|
| 2537 |
} |
2537 |
} |
| 2538 |
#endif |
2538 |
#endif |
| 2539 |
|
2539 |
|
|
|
2540 |
static void ahc_linux_get_signalling(struct Scsi_Host *shost) |
| 2541 |
{ |
| 2542 |
struct ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata; |
| 2543 |
u8 mode = ahc_inb(ahc, SBLKCTL); |
| 2544 |
|
| 2545 |
if (mode & ENAB40) |
| 2546 |
spi_signalling(shost) = SPI_SIGNAL_LVD; |
| 2547 |
else if (mode & ENAB20) |
| 2548 |
spi_signalling(shost) = |
| 2549 |
ahc->features & AHC_HVD ? |
| 2550 |
SPI_SIGNAL_HVD : |
| 2551 |
SPI_SIGNAL_SE; |
| 2552 |
else |
| 2553 |
spi_signalling(shost) = SPI_SIGNAL_UNKNOWN; |
| 2554 |
} |
| 2555 |
|
| 2540 |
static struct spi_function_template ahc_linux_transport_functions = { |
2556 |
static struct spi_function_template ahc_linux_transport_functions = { |
| 2541 |
.set_offset = ahc_linux_set_offset, |
2557 |
.set_offset = ahc_linux_set_offset, |
| 2542 |
.show_offset = 1, |
2558 |
.show_offset = 1, |
|
Lines 2552-2557
#if 0
Link Here
|
| 2552 |
.set_qas = ahc_linux_set_qas, |
2568 |
.set_qas = ahc_linux_set_qas, |
| 2553 |
.show_qas = 1, |
2569 |
.show_qas = 1, |
| 2554 |
#endif |
2570 |
#endif |
|
|
2571 |
.get_signalling = ahc_linux_get_signalling, |
| 2555 |
}; |
2572 |
}; |
| 2556 |
|
2573 |
|
| 2557 |
|
2574 |
|
| 2558 |
-- a/drivers/scsi/aic7xxx/aic7xxx_pci.c |
2575 |
++ b/drivers/scsi/aic7xxx/aic7xxx_pci.c |
|
Lines 144-159
static ahc_device_setup_t ahc_aic785X_se
Link Here
|
| 144 |
static ahc_device_setup_t ahc_aic7860_setup; |
144 |
static ahc_device_setup_t ahc_aic7860_setup; |
| 145 |
static ahc_device_setup_t ahc_apa1480_setup; |
145 |
static ahc_device_setup_t ahc_apa1480_setup; |
| 146 |
static ahc_device_setup_t ahc_aic7870_setup; |
146 |
static ahc_device_setup_t ahc_aic7870_setup; |
|
|
147 |
static ahc_device_setup_t ahc_aic7870h_setup; |
| 147 |
static ahc_device_setup_t ahc_aha394X_setup; |
148 |
static ahc_device_setup_t ahc_aha394X_setup; |
|
|
149 |
static ahc_device_setup_t ahc_aha394Xh_setup; |
| 148 |
static ahc_device_setup_t ahc_aha494X_setup; |
150 |
static ahc_device_setup_t ahc_aha494X_setup; |
|
|
151 |
static ahc_device_setup_t ahc_aha494Xh_setup; |
| 149 |
static ahc_device_setup_t ahc_aha398X_setup; |
152 |
static ahc_device_setup_t ahc_aha398X_setup; |
| 150 |
static ahc_device_setup_t ahc_aic7880_setup; |
153 |
static ahc_device_setup_t ahc_aic7880_setup; |
|
|
154 |
static ahc_device_setup_t ahc_aic7880h_setup; |
| 151 |
static ahc_device_setup_t ahc_aha2940Pro_setup; |
155 |
static ahc_device_setup_t ahc_aha2940Pro_setup; |
| 152 |
static ahc_device_setup_t ahc_aha394XU_setup; |
156 |
static ahc_device_setup_t ahc_aha394XU_setup; |
|
|
157 |
static ahc_device_setup_t ahc_aha394XUh_setup; |
| 153 |
static ahc_device_setup_t ahc_aha398XU_setup; |
158 |
static ahc_device_setup_t ahc_aha398XU_setup; |
| 154 |
static ahc_device_setup_t ahc_aic7890_setup; |
159 |
static ahc_device_setup_t ahc_aic7890_setup; |
| 155 |
static ahc_device_setup_t ahc_aic7892_setup; |
160 |
static ahc_device_setup_t ahc_aic7892_setup; |
| 156 |
static ahc_device_setup_t ahc_aic7895_setup; |
161 |
static ahc_device_setup_t ahc_aic7895_setup; |
|
|
162 |
static ahc_device_setup_t ahc_aic7895h_setup; |
| 157 |
static ahc_device_setup_t ahc_aic7896_setup; |
163 |
static ahc_device_setup_t ahc_aic7896_setup; |
| 158 |
static ahc_device_setup_t ahc_aic7899_setup; |
164 |
static ahc_device_setup_t ahc_aic7899_setup; |
| 159 |
static ahc_device_setup_t ahc_aha29160C_setup; |
165 |
static ahc_device_setup_t ahc_aha29160C_setup; |
|
Lines 225-243
struct ahc_pci_identity ahc_pci_ident_ta
Link Here
|
| 225 |
ID_AHA_2944, |
231 |
ID_AHA_2944, |
| 226 |
ID_ALL_MASK, |
232 |
ID_ALL_MASK, |
| 227 |
"Adaptec 2944 SCSI adapter", |
233 |
"Adaptec 2944 SCSI adapter", |
| 228 |
ahc_aic7870_setup |
234 |
ahc_aic7870h_setup |
| 229 |
}, |
235 |
}, |
| 230 |
{ |
236 |
{ |
| 231 |
ID_AHA_3944, |
237 |
ID_AHA_3944, |
| 232 |
ID_ALL_MASK, |
238 |
ID_ALL_MASK, |
| 233 |
"Adaptec 3944 SCSI adapter", |
239 |
"Adaptec 3944 SCSI adapter", |
| 234 |
ahc_aha394X_setup |
240 |
ahc_aha394Xh_setup |
| 235 |
}, |
241 |
}, |
| 236 |
{ |
242 |
{ |
| 237 |
ID_AHA_4944, |
243 |
ID_AHA_4944, |
| 238 |
ID_ALL_MASK, |
244 |
ID_ALL_MASK, |
| 239 |
"Adaptec 4944 SCSI adapter", |
245 |
"Adaptec 4944 SCSI adapter", |
| 240 |
ahc_aha494X_setup |
246 |
ahc_aha494Xh_setup |
| 241 |
}, |
247 |
}, |
| 242 |
/* aic7880 based controllers */ |
248 |
/* aic7880 based controllers */ |
| 243 |
{ |
249 |
{ |
|
Lines 256-268
struct ahc_pci_identity ahc_pci_ident_ta
Link Here
|
| 256 |
ID_AHA_2944U & ID_DEV_VENDOR_MASK, |
262 |
ID_AHA_2944U & ID_DEV_VENDOR_MASK, |
| 257 |
ID_DEV_VENDOR_MASK, |
263 |
ID_DEV_VENDOR_MASK, |
| 258 |
"Adaptec 2944 Ultra SCSI adapter", |
264 |
"Adaptec 2944 Ultra SCSI adapter", |
| 259 |
ahc_aic7880_setup |
265 |
ahc_aic7880h_setup |
| 260 |
}, |
266 |
}, |
| 261 |
{ |
267 |
{ |
| 262 |
ID_AHA_3944U & ID_DEV_VENDOR_MASK, |
268 |
ID_AHA_3944U & ID_DEV_VENDOR_MASK, |
| 263 |
ID_DEV_VENDOR_MASK, |
269 |
ID_DEV_VENDOR_MASK, |
| 264 |
"Adaptec 3944 Ultra SCSI adapter", |
270 |
"Adaptec 3944 Ultra SCSI adapter", |
| 265 |
ahc_aha394XU_setup |
271 |
ahc_aha394XUh_setup |
| 266 |
}, |
272 |
}, |
| 267 |
{ |
273 |
{ |
| 268 |
ID_AHA_398XU & ID_DEV_VENDOR_MASK, |
274 |
ID_AHA_398XU & ID_DEV_VENDOR_MASK, |
|
Lines 278-284
struct ahc_pci_identity ahc_pci_ident_ta
Link Here
|
| 278 |
ID_AHA_4944U & ID_DEV_VENDOR_MASK, |
284 |
ID_AHA_4944U & ID_DEV_VENDOR_MASK, |
| 279 |
ID_DEV_VENDOR_MASK, |
285 |
ID_DEV_VENDOR_MASK, |
| 280 |
"Adaptec 4944 Ultra SCSI adapter", |
286 |
"Adaptec 4944 Ultra SCSI adapter", |
| 281 |
ahc_aic7880_setup |
287 |
ahc_aic7880h_setup |
| 282 |
}, |
288 |
}, |
| 283 |
{ |
289 |
{ |
| 284 |
ID_AHA_2930U & ID_DEV_VENDOR_MASK, |
290 |
ID_AHA_2930U & ID_DEV_VENDOR_MASK, |
|
Lines 414-420
struct ahc_pci_identity ahc_pci_ident_ta
Link Here
|
| 414 |
ID_AHA_3944AU, |
420 |
ID_AHA_3944AU, |
| 415 |
ID_ALL_MASK, |
421 |
ID_ALL_MASK, |
| 416 |
"Adaptec 3944A Ultra SCSI adapter", |
422 |
"Adaptec 3944A Ultra SCSI adapter", |
| 417 |
ahc_aic7895_setup |
423 |
ahc_aic7895h_setup |
| 418 |
}, |
424 |
}, |
| 419 |
{ |
425 |
{ |
| 420 |
ID_AIC7895_ARO, |
426 |
ID_AIC7895_ARO, |
|
Lines 2121-2126
ahc_aic7870_setup(struct ahc_softc *ahc)
Link Here
|
| 2121 |
} |
2127 |
} |
| 2122 |
|
2128 |
|
| 2123 |
static int |
2129 |
static int |
|
|
2130 |
ahc_aic7870h_setup(struct ahc_softc *ahc) |
| 2131 |
{ |
| 2132 |
int error = ahc_aic7870_setup(ahc); |
| 2133 |
|
| 2134 |
ahc->features |= AHC_HVD; |
| 2135 |
|
| 2136 |
return error; |
| 2137 |
} |
| 2138 |
|
| 2139 |
static int |
| 2124 |
ahc_aha394X_setup(struct ahc_softc *ahc) |
2140 |
ahc_aha394X_setup(struct ahc_softc *ahc) |
| 2125 |
{ |
2141 |
{ |
| 2126 |
int error; |
2142 |
int error; |
|
Lines 2132-2137
ahc_aha394X_setup(struct ahc_softc *ahc)
Link Here
|
| 2132 |
} |
2148 |
} |
| 2133 |
|
2149 |
|
| 2134 |
static int |
2150 |
static int |
|
|
2151 |
ahc_aha394Xh_setup(struct ahc_softc *ahc) |
| 2152 |
{ |
| 2153 |
int error = ahc_aha394X_setup(ahc); |
| 2154 |
|
| 2155 |
ahc->features |= AHC_HVD; |
| 2156 |
|
| 2157 |
return error; |
| 2158 |
} |
| 2159 |
|
| 2160 |
static int |
| 2135 |
ahc_aha398X_setup(struct ahc_softc *ahc) |
2161 |
ahc_aha398X_setup(struct ahc_softc *ahc) |
| 2136 |
{ |
2162 |
{ |
| 2137 |
int error; |
2163 |
int error; |
|
Lines 2154-2159
ahc_aha494X_setup(struct ahc_softc *ahc)
Link Here
|
| 2154 |
} |
2180 |
} |
| 2155 |
|
2181 |
|
| 2156 |
static int |
2182 |
static int |
|
|
2183 |
ahc_aha494Xh_setup(struct ahc_softc *ahc) |
| 2184 |
{ |
| 2185 |
int error = ahc_aha494X_setup(ahc); |
| 2186 |
|
| 2187 |
ahc->features |= AHC_HVD; |
| 2188 |
|
| 2189 |
return error; |
| 2190 |
} |
| 2191 |
|
| 2192 |
static int |
| 2157 |
ahc_aic7880_setup(struct ahc_softc *ahc) |
2193 |
ahc_aic7880_setup(struct ahc_softc *ahc) |
| 2158 |
{ |
2194 |
{ |
| 2159 |
ahc_dev_softc_t pci; |
2195 |
ahc_dev_softc_t pci; |
|
Lines 2175-2180
ahc_aic7880_setup(struct ahc_softc *ahc)
Link Here
|
| 2175 |
} |
2211 |
} |
| 2176 |
|
2212 |
|
| 2177 |
static int |
2213 |
static int |
|
|
2214 |
ahc_aic7880h_setup(struct ahc_softc *ahc) |
| 2215 |
{ |
| 2216 |
int error = ahc_aic7880_setup(ahc); |
| 2217 |
|
| 2218 |
ahc->features |= AHC_HVD; |
| 2219 |
|
| 2220 |
return error; |
| 2221 |
} |
| 2222 |
|
| 2223 |
|
| 2224 |
static int |
| 2178 |
ahc_aha2940Pro_setup(struct ahc_softc *ahc) |
2225 |
ahc_aha2940Pro_setup(struct ahc_softc *ahc) |
| 2179 |
{ |
2226 |
{ |
| 2180 |
|
2227 |
|
|
Lines 2194-2199
ahc_aha394XU_setup(struct ahc_softc *ahc
Link Here
|
| 2194 |
} |
2241 |
} |
| 2195 |
|
2242 |
|
| 2196 |
static int |
2243 |
static int |
|
|
2244 |
ahc_aha394XUh_setup(struct ahc_softc *ahc) |
| 2245 |
{ |
| 2246 |
int error = ahc_aha394XU_setup(ahc); |
| 2247 |
|
| 2248 |
ahc->features |= AHC_HVD; |
| 2249 |
|
| 2250 |
return error; |
| 2251 |
} |
| 2252 |
|
| 2253 |
static int |
| 2197 |
ahc_aha398XU_setup(struct ahc_softc *ahc) |
2254 |
ahc_aha398XU_setup(struct ahc_softc *ahc) |
| 2198 |
{ |
2255 |
{ |
| 2199 |
int error; |
2256 |
int error; |
|
Lines 2292-2297
#endif
Link Here
|
| 2292 |
} |
2349 |
} |
| 2293 |
|
2350 |
|
| 2294 |
static int |
2351 |
static int |
|
|
2352 |
ahc_aic7895h_setup(struct ahc_softc *ahc) |
| 2353 |
{ |
| 2354 |
int error = ahc_aic7895_setup(ahc); |
| 2355 |
|
| 2356 |
ahc->features |= AHC_HVD; |
| 2357 |
|
| 2358 |
return error; |
| 2359 |
} |
| 2360 |
|
| 2361 |
static int |
| 2295 |
ahc_aic7896_setup(struct ahc_softc *ahc) |
2362 |
ahc_aic7896_setup(struct ahc_softc *ahc) |
| 2296 |
{ |
2363 |
{ |
| 2297 |
ahc_dev_softc_t pci; |
2364 |
ahc_dev_softc_t pci; |
| 2298 |
-- a/drivers/scsi/scsi_transport_spi.c |
2365 |
++ b/drivers/scsi/scsi_transport_spi.c |
|
Lines 785-790
spi_dv_device_internal(struct scsi_devic
Link Here
|
| 785 |
{ |
785 |
{ |
| 786 |
struct spi_internal *i = to_spi_internal(sdev->host->transportt); |
786 |
struct spi_internal *i = to_spi_internal(sdev->host->transportt); |
| 787 |
struct scsi_target *starget = sdev->sdev_target; |
787 |
struct scsi_target *starget = sdev->sdev_target; |
|
|
788 |
struct Scsi_Host *shost = sdev->host; |
| 788 |
int len = sdev->inquiry_len; |
789 |
int len = sdev->inquiry_len; |
| 789 |
/* first set us up for narrow async */ |
790 |
/* first set us up for narrow async */ |
| 790 |
DV_SET(offset, 0); |
791 |
DV_SET(offset, 0); |
|
Lines 844-849
spi_dv_device_internal(struct scsi_devic
Link Here
|
| 844 |
if (spi_min_period(starget) == 8) |
845 |
if (spi_min_period(starget) == 8) |
| 845 |
DV_SET(pcomp_en, 1); |
846 |
DV_SET(pcomp_en, 1); |
| 846 |
} |
847 |
} |
|
|
848 |
/* now that we've done all this, actually check the bus |
| 849 |
* signal type (if known). Some devices are stupid on |
| 850 |
* a SE bus and still claim they can try LVD only settings */ |
| 851 |
if (i->f->get_signalling) |
| 852 |
i->f->get_signalling(shost); |
| 853 |
if (spi_signalling(shost) == SPI_SIGNAL_SE || |
| 854 |
spi_signalling(shost) == SPI_SIGNAL_HVD) |
| 855 |
DV_SET(dt, 0); |
| 847 |
/* Do the read only INQUIRY tests */ |
856 |
/* Do the read only INQUIRY tests */ |
| 848 |
spi_dv_retrain(sdev, buffer, buffer + sdev->inquiry_len, |
857 |
spi_dv_retrain(sdev, buffer, buffer + sdev->inquiry_len, |
| 849 |
spi_dv_device_compare_inquiry); |
858 |
spi_dv_device_compare_inquiry); |