diff options
Diffstat (limited to 'drivers/scsi/aic7xxx')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 39 | ||||
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_proc.c | 4 |
2 files changed, 11 insertions, 32 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index cf8e0ca830a2..10a2570ca387 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
@@ -1624,7 +1624,11 @@ ahd_send_async(struct ahd_softc *ahd, char channel, | |||
1624 | target_ppr_options = | 1624 | target_ppr_options = |
1625 | (spi_dt(starget) ? MSG_EXT_PPR_DT_REQ : 0) | 1625 | (spi_dt(starget) ? MSG_EXT_PPR_DT_REQ : 0) |
1626 | + (spi_qas(starget) ? MSG_EXT_PPR_QAS_REQ : 0) | 1626 | + (spi_qas(starget) ? MSG_EXT_PPR_QAS_REQ : 0) |
1627 | + (spi_iu(starget) ? MSG_EXT_PPR_IU_REQ : 0); | 1627 | + (spi_iu(starget) ? MSG_EXT_PPR_IU_REQ : 0) |
1628 | + (spi_rd_strm(starget) ? MSG_EXT_PPR_RD_STRM : 0) | ||
1629 | + (spi_pcomp_en(starget) ? MSG_EXT_PPR_PCOMP_EN : 0) | ||
1630 | + (spi_rti(starget) ? MSG_EXT_PPR_RTI : 0) | ||
1631 | + (spi_wr_flow(starget) ? MSG_EXT_PPR_WR_FLOW : 0); | ||
1628 | 1632 | ||
1629 | if (tinfo->curr.period == spi_period(starget) | 1633 | if (tinfo->curr.period == spi_period(starget) |
1630 | && tinfo->curr.width == spi_width(starget) | 1634 | && tinfo->curr.width == spi_width(starget) |
@@ -1639,6 +1643,10 @@ ahd_send_async(struct ahd_softc *ahd, char channel, | |||
1639 | spi_dt(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_DT_REQ ? 1 : 0; | 1643 | spi_dt(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_DT_REQ ? 1 : 0; |
1640 | spi_qas(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_QAS_REQ ? 1 : 0; | 1644 | spi_qas(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_QAS_REQ ? 1 : 0; |
1641 | spi_iu(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ ? 1 : 0; | 1645 | spi_iu(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ ? 1 : 0; |
1646 | spi_rd_strm(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_RD_STRM ? 1 : 0; | ||
1647 | spi_pcomp_en(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_PCOMP_EN ? 1 : 0; | ||
1648 | spi_rti(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_RTI ? 1 : 0; | ||
1649 | spi_wr_flow(starget) = tinfo->curr.ppr_options & MSG_EXT_PPR_WR_FLOW ? 1 : 0; | ||
1642 | spi_display_xfer_agreement(starget); | 1650 | spi_display_xfer_agreement(starget); |
1643 | break; | 1651 | break; |
1644 | } | 1652 | } |
@@ -2318,18 +2326,6 @@ done: | |||
2318 | 2326 | ||
2319 | static void ahd_linux_exit(void); | 2327 | static void ahd_linux_exit(void); |
2320 | 2328 | ||
2321 | static void ahd_linux_set_xferflags(struct scsi_target *starget, unsigned int ppr_options, unsigned int period) | ||
2322 | { | ||
2323 | spi_qas(starget) = (ppr_options & MSG_EXT_PPR_QAS_REQ)? 1 : 0; | ||
2324 | spi_dt(starget) = (ppr_options & MSG_EXT_PPR_DT_REQ)? 1 : 0; | ||
2325 | spi_iu(starget) = (ppr_options & MSG_EXT_PPR_IU_REQ) ? 1 : 0; | ||
2326 | spi_rd_strm(starget) = (ppr_options & MSG_EXT_PPR_RD_STRM) ? 1 : 0; | ||
2327 | spi_wr_flow(starget) = (ppr_options & MSG_EXT_PPR_WR_FLOW) ? 1 : 0; | ||
2328 | spi_pcomp_en(starget) = (ppr_options & MSG_EXT_PPR_PCOMP_EN) ? 1 : 0; | ||
2329 | spi_rti(starget) = (ppr_options & MSG_EXT_PPR_RTI) ? 1 : 0; | ||
2330 | spi_period(starget) = period; | ||
2331 | } | ||
2332 | |||
2333 | static void ahd_linux_set_width(struct scsi_target *starget, int width) | 2329 | static void ahd_linux_set_width(struct scsi_target *starget, int width) |
2334 | { | 2330 | { |
2335 | struct Scsi_Host *shost = dev_to_shost(starget->dev.parent); | 2331 | struct Scsi_Host *shost = dev_to_shost(starget->dev.parent); |
@@ -2388,8 +2384,6 @@ static void ahd_linux_set_period(struct scsi_target *starget, int period) | |||
2388 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2384 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2389 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2385 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2390 | 2386 | ||
2391 | ahd_linux_set_xferflags(starget, ppr_options, period); | ||
2392 | |||
2393 | ahd_lock(ahd, &flags); | 2387 | ahd_lock(ahd, &flags); |
2394 | ahd_set_syncrate(ahd, &devinfo, period, offset, | 2388 | ahd_set_syncrate(ahd, &devinfo, period, offset, |
2395 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2389 | ppr_options, AHD_TRANS_GOAL, FALSE); |
@@ -2424,7 +2418,6 @@ static void ahd_linux_set_offset(struct scsi_target *starget, int offset) | |||
2424 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2418 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2425 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2419 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2426 | } | 2420 | } |
2427 | ahd_linux_set_xferflags(starget, ppr_options, period); | ||
2428 | 2421 | ||
2429 | ahd_lock(ahd, &flags); | 2422 | ahd_lock(ahd, &flags); |
2430 | ahd_set_syncrate(ahd, &devinfo, period, offset, ppr_options, | 2423 | ahd_set_syncrate(ahd, &devinfo, period, offset, ppr_options, |
@@ -2467,8 +2460,6 @@ static void ahd_linux_set_dt(struct scsi_target *starget, int dt) | |||
2467 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2460 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2468 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2461 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2469 | 2462 | ||
2470 | ahd_linux_set_xferflags(starget, ppr_options, period); | ||
2471 | |||
2472 | ahd_lock(ahd, &flags); | 2463 | ahd_lock(ahd, &flags); |
2473 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, | 2464 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, |
2474 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2465 | ppr_options, AHD_TRANS_GOAL, FALSE); |
@@ -2508,8 +2499,6 @@ static void ahd_linux_set_qas(struct scsi_target *starget, int qas) | |||
2508 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2499 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2509 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2500 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2510 | 2501 | ||
2511 | spi_qas(starget) = (ppr_options & MSG_EXT_PPR_QAS_REQ)? 1 : 0; | ||
2512 | |||
2513 | ahd_lock(ahd, &flags); | 2502 | ahd_lock(ahd, &flags); |
2514 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, | 2503 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, |
2515 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2504 | ppr_options, AHD_TRANS_GOAL, FALSE); |
@@ -2550,8 +2539,6 @@ static void ahd_linux_set_iu(struct scsi_target *starget, int iu) | |||
2550 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2539 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2551 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2540 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2552 | 2541 | ||
2553 | ahd_linux_set_xferflags(starget, ppr_options, period); | ||
2554 | |||
2555 | ahd_lock(ahd, &flags); | 2542 | ahd_lock(ahd, &flags); |
2556 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, | 2543 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, |
2557 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2544 | ppr_options, AHD_TRANS_GOAL, FALSE); |
@@ -2588,8 +2575,6 @@ static void ahd_linux_set_rd_strm(struct scsi_target *starget, int rdstrm) | |||
2588 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2575 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2589 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2576 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2590 | 2577 | ||
2591 | spi_rd_strm(starget) = (ppr_options & MSG_EXT_PPR_RD_STRM) ? 1 : 0; | ||
2592 | |||
2593 | ahd_lock(ahd, &flags); | 2578 | ahd_lock(ahd, &flags); |
2594 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, | 2579 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, |
2595 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2580 | ppr_options, AHD_TRANS_GOAL, FALSE); |
@@ -2626,8 +2611,6 @@ static void ahd_linux_set_wr_flow(struct scsi_target *starget, int wrflow) | |||
2626 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2611 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2627 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2612 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2628 | 2613 | ||
2629 | spi_wr_flow(starget) = (ppr_options & MSG_EXT_PPR_WR_FLOW) ? 1 : 0; | ||
2630 | |||
2631 | ahd_lock(ahd, &flags); | 2614 | ahd_lock(ahd, &flags); |
2632 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, | 2615 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, |
2633 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2616 | ppr_options, AHD_TRANS_GOAL, FALSE); |
@@ -2672,8 +2655,6 @@ static void ahd_linux_set_rti(struct scsi_target *starget, int rti) | |||
2672 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2655 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2673 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2656 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2674 | 2657 | ||
2675 | spi_rti(starget) = (ppr_options & MSG_EXT_PPR_RTI) ? 1 : 0; | ||
2676 | |||
2677 | ahd_lock(ahd, &flags); | 2658 | ahd_lock(ahd, &flags); |
2678 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, | 2659 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, |
2679 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2660 | ppr_options, AHD_TRANS_GOAL, FALSE); |
@@ -2710,8 +2691,6 @@ static void ahd_linux_set_pcomp_en(struct scsi_target *starget, int pcomp) | |||
2710 | ahd_find_syncrate(ahd, &period, &ppr_options, | 2691 | ahd_find_syncrate(ahd, &period, &ppr_options, |
2711 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); | 2692 | dt ? AHD_SYNCRATE_MAX : AHD_SYNCRATE_ULTRA2); |
2712 | 2693 | ||
2713 | spi_pcomp_en(starget) = (ppr_options & MSG_EXT_PPR_PCOMP_EN) ? 1 : 0; | ||
2714 | |||
2715 | ahd_lock(ahd, &flags); | 2694 | ahd_lock(ahd, &flags); |
2716 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, | 2695 | ahd_set_syncrate(ahd, &devinfo, period, tinfo->goal.offset, |
2717 | ppr_options, AHD_TRANS_GOAL, FALSE); | 2696 | ppr_options, AHD_TRANS_GOAL, FALSE); |
diff --git a/drivers/scsi/aic7xxx/aic79xx_proc.c b/drivers/scsi/aic7xxx/aic79xx_proc.c index 2058aa9b5c80..cffdd104f9e4 100644 --- a/drivers/scsi/aic7xxx/aic79xx_proc.c +++ b/drivers/scsi/aic7xxx/aic79xx_proc.c | |||
@@ -178,9 +178,9 @@ ahd_dump_target_state(struct ahd_softc *ahd, struct info_str *info, | |||
178 | copy_info(info, "\tUser: "); | 178 | copy_info(info, "\tUser: "); |
179 | ahd_format_transinfo(info, &tinfo->user); | 179 | ahd_format_transinfo(info, &tinfo->user); |
180 | starget = ahd->platform_data->starget[target_offset]; | 180 | starget = ahd->platform_data->starget[target_offset]; |
181 | targ = scsi_transport_target_data(starget); | 181 | if (starget == NULL) |
182 | if (targ == NULL) | ||
183 | return; | 182 | return; |
183 | targ = scsi_transport_target_data(starget); | ||
184 | 184 | ||
185 | copy_info(info, "\tGoal: "); | 185 | copy_info(info, "\tGoal: "); |
186 | ahd_format_transinfo(info, &tinfo->goal); | 186 | ahd_format_transinfo(info, &tinfo->goal); |