aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/aic7xxx/aic7xxx_osm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/aic7xxx/aic7xxx_osm.c')
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_osm.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
index 1803ab6fc21c..2e9c38f2e8a6 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
@@ -2317,8 +2317,13 @@ static void ahc_linux_set_period(struct scsi_target *starget, int period)
2317 2317
2318 if (period < 9) 2318 if (period < 9)
2319 period = 9; /* 12.5ns is our minimum */ 2319 period = 9; /* 12.5ns is our minimum */
2320 if (period == 9) 2320 if (period == 9) {
2321 ppr_options |= MSG_EXT_PPR_DT_REQ; 2321 if (spi_max_width(starget))
2322 ppr_options |= MSG_EXT_PPR_DT_REQ;
2323 else
2324 /* need wide for DT and need DT for 12.5 ns */
2325 period = 10;
2326 }
2322 2327
2323 ahc_compile_devinfo(&devinfo, shost->this_id, starget->id, 0, 2328 ahc_compile_devinfo(&devinfo, shost->this_id, starget->id, 0,
2324 starget->channel + 'A', ROLE_INITIATOR); 2329 starget->channel + 'A', ROLE_INITIATOR);
@@ -2381,7 +2386,7 @@ static void ahc_linux_set_dt(struct scsi_target *starget, int dt)
2381 unsigned long flags; 2386 unsigned long flags;
2382 struct ahc_syncrate *syncrate; 2387 struct ahc_syncrate *syncrate;
2383 2388
2384 if (dt) { 2389 if (dt && spi_max_width(starget)) {
2385 ppr_options |= MSG_EXT_PPR_DT_REQ; 2390 ppr_options |= MSG_EXT_PPR_DT_REQ;
2386 if (!width) 2391 if (!width)
2387 ahc_linux_set_width(starget, 1); 2392 ahc_linux_set_width(starget, 1);