Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 127991
Collapse All | Expand All

(-)a/drivers/scsi/aic7xxx/aic7xxx.h (-10 / +104 lines)
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);

Return to bug 127991