diff options
Diffstat (limited to 'drivers/scsi/aic7xxx/aic7xxx_osm.c')
-rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.c | 11 |
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); |