diff options
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx.h | 17 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_core.c | 88 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_inline.h | 44 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 5 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.h | 1 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_pci.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx.h | 49 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_core.c | 180 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_inline.h | 55 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.c | 6 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_osm.h | 3 | ||||
| -rw-r--r-- | drivers/scsi/aic7xxx/aic7xxx_proc.c | 2 |
12 files changed, 195 insertions, 257 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx.h b/drivers/scsi/aic7xxx/aic79xx.h index 2f00467b6b8c..9c1484453d5f 100644 --- a/drivers/scsi/aic7xxx/aic79xx.h +++ b/drivers/scsi/aic7xxx/aic79xx.h | |||
| @@ -1314,7 +1314,7 @@ typedef int (ahd_device_setup_t)(struct ahd_softc *); | |||
| 1314 | struct ahd_pci_identity { | 1314 | struct ahd_pci_identity { |
| 1315 | uint64_t full_id; | 1315 | uint64_t full_id; |
| 1316 | uint64_t id_mask; | 1316 | uint64_t id_mask; |
| 1317 | char *name; | 1317 | const char *name; |
| 1318 | ahd_device_setup_t *setup; | 1318 | ahd_device_setup_t *setup; |
| 1319 | }; | 1319 | }; |
| 1320 | 1320 | ||
| @@ -1322,7 +1322,7 @@ struct ahd_pci_identity { | |||
| 1322 | struct aic7770_identity { | 1322 | struct aic7770_identity { |
| 1323 | uint32_t full_id; | 1323 | uint32_t full_id; |
| 1324 | uint32_t id_mask; | 1324 | uint32_t id_mask; |
| 1325 | char *name; | 1325 | const char *name; |
| 1326 | ahd_device_setup_t *setup; | 1326 | ahd_device_setup_t *setup; |
| 1327 | }; | 1327 | }; |
| 1328 | extern struct aic7770_identity aic7770_ident_table []; | 1328 | extern struct aic7770_identity aic7770_ident_table []; |
| @@ -1333,7 +1333,6 @@ extern const int ahd_num_aic7770_devs; | |||
| 1333 | 1333 | ||
| 1334 | /*************************** Function Declarations ****************************/ | 1334 | /*************************** Function Declarations ****************************/ |
| 1335 | /******************************************************************************/ | 1335 | /******************************************************************************/ |
| 1336 | void ahd_reset_cmds_pending(struct ahd_softc *ahd); | ||
| 1337 | 1336 | ||
| 1338 | /***************************** PCI Front End *********************************/ | 1337 | /***************************** PCI Front End *********************************/ |
| 1339 | struct ahd_pci_identity *ahd_find_pci_device(ahd_dev_softc_t); | 1338 | struct ahd_pci_identity *ahd_find_pci_device(ahd_dev_softc_t); |
| @@ -1376,16 +1375,6 @@ int ahd_write_flexport(struct ahd_softc *ahd, | |||
| 1376 | int ahd_read_flexport(struct ahd_softc *ahd, u_int addr, | 1375 | int ahd_read_flexport(struct ahd_softc *ahd, u_int addr, |
| 1377 | uint8_t *value); | 1376 | uint8_t *value); |
| 1378 | 1377 | ||
| 1379 | /*************************** Interrupt Services *******************************/ | ||
| 1380 | void ahd_run_qoutfifo(struct ahd_softc *ahd); | ||
| 1381 | #ifdef AHD_TARGET_MODE | ||
| 1382 | void ahd_run_tqinfifo(struct ahd_softc *ahd, int paused); | ||
| 1383 | #endif | ||
| 1384 | void ahd_handle_hwerrint(struct ahd_softc *ahd); | ||
| 1385 | void ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat); | ||
| 1386 | void ahd_handle_scsiint(struct ahd_softc *ahd, | ||
| 1387 | u_int intstat); | ||
| 1388 | |||
| 1389 | /***************************** Error Recovery *********************************/ | 1378 | /***************************** Error Recovery *********************************/ |
| 1390 | typedef enum { | 1379 | typedef enum { |
| 1391 | SEARCH_COMPLETE, | 1380 | SEARCH_COMPLETE, |
| @@ -1479,7 +1468,7 @@ extern uint32_t ahd_debug; | |||
| 1479 | void ahd_print_devinfo(struct ahd_softc *ahd, | 1468 | void ahd_print_devinfo(struct ahd_softc *ahd, |
| 1480 | struct ahd_devinfo *devinfo); | 1469 | struct ahd_devinfo *devinfo); |
| 1481 | void ahd_dump_card_state(struct ahd_softc *ahd); | 1470 | void ahd_dump_card_state(struct ahd_softc *ahd); |
| 1482 | int ahd_print_register(ahd_reg_parse_entry_t *table, | 1471 | int ahd_print_register(const ahd_reg_parse_entry_t *table, |
| 1483 | u_int num_entries, | 1472 | u_int num_entries, |
| 1484 | const char *name, | 1473 | const char *name, |
| 1485 | u_int address, | 1474 | u_int address, |
diff --git a/drivers/scsi/aic7xxx/aic79xx_core.c b/drivers/scsi/aic7xxx/aic79xx_core.c index 336f4bea251b..1e452cfa2390 100644 --- a/drivers/scsi/aic7xxx/aic79xx_core.c +++ b/drivers/scsi/aic7xxx/aic79xx_core.c | |||
| @@ -266,6 +266,18 @@ static int ahd_match_scb(struct ahd_softc *ahd, struct scb *scb, | |||
| 266 | int target, char channel, int lun, | 266 | int target, char channel, int lun, |
| 267 | u_int tag, role_t role); | 267 | u_int tag, role_t role); |
| 268 | 268 | ||
| 269 | static void ahd_reset_cmds_pending(struct ahd_softc *ahd); | ||
| 270 | |||
| 271 | /*************************** Interrupt Services *******************************/ | ||
| 272 | static void ahd_run_qoutfifo(struct ahd_softc *ahd); | ||
| 273 | #ifdef AHD_TARGET_MODE | ||
| 274 | static void ahd_run_tqinfifo(struct ahd_softc *ahd, int paused); | ||
| 275 | #endif | ||
| 276 | static void ahd_handle_hwerrint(struct ahd_softc *ahd); | ||
| 277 | static void ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat); | ||
| 278 | static void ahd_handle_scsiint(struct ahd_softc *ahd, | ||
| 279 | u_int intstat); | ||
| 280 | |||
| 269 | /************************ Sequencer Execution Control *************************/ | 281 | /************************ Sequencer Execution Control *************************/ |
| 270 | void | 282 | void |
| 271 | ahd_set_modes(struct ahd_softc *ahd, ahd_mode src, ahd_mode dst) | 283 | ahd_set_modes(struct ahd_softc *ahd, ahd_mode src, ahd_mode dst) |
| @@ -285,7 +297,7 @@ ahd_set_modes(struct ahd_softc *ahd, ahd_mode src, ahd_mode dst) | |||
| 285 | ahd->dst_mode = dst; | 297 | ahd->dst_mode = dst; |
| 286 | } | 298 | } |
| 287 | 299 | ||
| 288 | void | 300 | static void |
| 289 | ahd_update_modes(struct ahd_softc *ahd) | 301 | ahd_update_modes(struct ahd_softc *ahd) |
| 290 | { | 302 | { |
| 291 | ahd_mode_state mode_ptr; | 303 | ahd_mode_state mode_ptr; |
| @@ -301,7 +313,7 @@ ahd_update_modes(struct ahd_softc *ahd) | |||
| 301 | ahd_known_modes(ahd, src, dst); | 313 | ahd_known_modes(ahd, src, dst); |
| 302 | } | 314 | } |
| 303 | 315 | ||
| 304 | void | 316 | static void |
| 305 | ahd_assert_modes(struct ahd_softc *ahd, ahd_mode srcmode, | 317 | ahd_assert_modes(struct ahd_softc *ahd, ahd_mode srcmode, |
| 306 | ahd_mode dstmode, const char *file, int line) | 318 | ahd_mode dstmode, const char *file, int line) |
| 307 | { | 319 | { |
| @@ -422,7 +434,7 @@ ahd_sg_setup(struct ahd_softc *ahd, struct scb *scb, | |||
| 422 | } | 434 | } |
| 423 | } | 435 | } |
| 424 | 436 | ||
| 425 | void | 437 | static void |
| 426 | ahd_setup_scb_common(struct ahd_softc *ahd, struct scb *scb) | 438 | ahd_setup_scb_common(struct ahd_softc *ahd, struct scb *scb) |
| 427 | { | 439 | { |
| 428 | /* XXX Handle target mode SCBs. */ | 440 | /* XXX Handle target mode SCBs. */ |
| @@ -443,7 +455,7 @@ ahd_setup_scb_common(struct ahd_softc *ahd, struct scb *scb) | |||
| 443 | ahd_htole32(scb->sense_busaddr); | 455 | ahd_htole32(scb->sense_busaddr); |
| 444 | } | 456 | } |
| 445 | 457 | ||
| 446 | void | 458 | static void |
| 447 | ahd_setup_data_scb(struct ahd_softc *ahd, struct scb *scb) | 459 | ahd_setup_data_scb(struct ahd_softc *ahd, struct scb *scb) |
| 448 | { | 460 | { |
| 449 | /* | 461 | /* |
| @@ -480,7 +492,7 @@ ahd_setup_data_scb(struct ahd_softc *ahd, struct scb *scb) | |||
| 480 | scb->hscb->sgptr = ahd_htole32(scb->sg_list_busaddr|SG_FULL_RESID); | 492 | scb->hscb->sgptr = ahd_htole32(scb->sg_list_busaddr|SG_FULL_RESID); |
| 481 | } | 493 | } |
| 482 | 494 | ||
| 483 | void | 495 | static void |
| 484 | ahd_setup_noxfer_scb(struct ahd_softc *ahd, struct scb *scb) | 496 | ahd_setup_noxfer_scb(struct ahd_softc *ahd, struct scb *scb) |
| 485 | { | 497 | { |
| 486 | scb->hscb->sgptr = ahd_htole32(SG_LIST_NULL); | 498 | scb->hscb->sgptr = ahd_htole32(SG_LIST_NULL); |
| @@ -489,7 +501,7 @@ ahd_setup_noxfer_scb(struct ahd_softc *ahd, struct scb *scb) | |||
| 489 | } | 501 | } |
| 490 | 502 | ||
| 491 | /************************** Memory mapping routines ***************************/ | 503 | /************************** Memory mapping routines ***************************/ |
| 492 | void * | 504 | static void * |
| 493 | ahd_sg_bus_to_virt(struct ahd_softc *ahd, struct scb *scb, uint32_t sg_busaddr) | 505 | ahd_sg_bus_to_virt(struct ahd_softc *ahd, struct scb *scb, uint32_t sg_busaddr) |
| 494 | { | 506 | { |
| 495 | dma_addr_t sg_offset; | 507 | dma_addr_t sg_offset; |
| @@ -499,7 +511,7 @@ ahd_sg_bus_to_virt(struct ahd_softc *ahd, struct scb *scb, uint32_t sg_busaddr) | |||
| 499 | return ((uint8_t *)scb->sg_list + sg_offset); | 511 | return ((uint8_t *)scb->sg_list + sg_offset); |
| 500 | } | 512 | } |
| 501 | 513 | ||
| 502 | uint32_t | 514 | static uint32_t |
| 503 | ahd_sg_virt_to_bus(struct ahd_softc *ahd, struct scb *scb, void *sg) | 515 | ahd_sg_virt_to_bus(struct ahd_softc *ahd, struct scb *scb, void *sg) |
| 504 | { | 516 | { |
| 505 | dma_addr_t sg_offset; | 517 | dma_addr_t sg_offset; |
| @@ -511,7 +523,7 @@ ahd_sg_virt_to_bus(struct ahd_softc *ahd, struct scb *scb, void *sg) | |||
| 511 | return (scb->sg_list_busaddr + sg_offset); | 523 | return (scb->sg_list_busaddr + sg_offset); |
| 512 | } | 524 | } |
| 513 | 525 | ||
| 514 | void | 526 | static void |
| 515 | ahd_sync_scb(struct ahd_softc *ahd, struct scb *scb, int op) | 527 | ahd_sync_scb(struct ahd_softc *ahd, struct scb *scb, int op) |
| 516 | { | 528 | { |
| 517 | ahd_dmamap_sync(ahd, ahd->scb_data.hscb_dmat, | 529 | ahd_dmamap_sync(ahd, ahd->scb_data.hscb_dmat, |
| @@ -532,7 +544,7 @@ ahd_sync_sglist(struct ahd_softc *ahd, struct scb *scb, int op) | |||
| 532 | /*len*/ahd_sg_size(ahd) * scb->sg_count, op); | 544 | /*len*/ahd_sg_size(ahd) * scb->sg_count, op); |
| 533 | } | 545 | } |
| 534 | 546 | ||
| 535 | void | 547 | static void |
| 536 | ahd_sync_sense(struct ahd_softc *ahd, struct scb *scb, int op) | 548 | ahd_sync_sense(struct ahd_softc *ahd, struct scb *scb, int op) |
| 537 | { | 549 | { |
| 538 | ahd_dmamap_sync(ahd, ahd->scb_data.sense_dmat, | 550 | ahd_dmamap_sync(ahd, ahd->scb_data.sense_dmat, |
| @@ -541,12 +553,14 @@ ahd_sync_sense(struct ahd_softc *ahd, struct scb *scb, int op) | |||
| 541 | /*len*/AHD_SENSE_BUFSIZE, op); | 553 | /*len*/AHD_SENSE_BUFSIZE, op); |
| 542 | } | 554 | } |
| 543 | 555 | ||
| 544 | uint32_t | 556 | #ifdef AHD_TARGET_MODE |
| 557 | static uint32_t | ||
| 545 | ahd_targetcmd_offset(struct ahd_softc *ahd, u_int index) | 558 | ahd_targetcmd_offset(struct ahd_softc *ahd, u_int index) |
| 546 | { | 559 | { |
| 547 | return (((uint8_t *)&ahd->targetcmds[index]) | 560 | return (((uint8_t *)&ahd->targetcmds[index]) |
| 548 | - (uint8_t *)ahd->qoutfifo); | 561 | - (uint8_t *)ahd->qoutfifo); |
| 549 | } | 562 | } |
| 563 | #endif | ||
| 550 | 564 | ||
| 551 | /*********************** Miscelaneous Support Functions ***********************/ | 565 | /*********************** Miscelaneous Support Functions ***********************/ |
| 552 | /* | 566 | /* |
| @@ -653,31 +667,35 @@ ahd_set_scbptr(struct ahd_softc *ahd, u_int scbptr) | |||
| 653 | ahd_outb(ahd, SCBPTR+1, (scbptr >> 8) & 0xFF); | 667 | ahd_outb(ahd, SCBPTR+1, (scbptr >> 8) & 0xFF); |
| 654 | } | 668 | } |
| 655 | 669 | ||
| 656 | u_int | 670 | #if 0 /* unused */ |
| 671 | static u_int | ||
| 657 | ahd_get_hnscb_qoff(struct ahd_softc *ahd) | 672 | ahd_get_hnscb_qoff(struct ahd_softc *ahd) |
| 658 | { | 673 | { |
| 659 | return (ahd_inw_atomic(ahd, HNSCB_QOFF)); | 674 | return (ahd_inw_atomic(ahd, HNSCB_QOFF)); |
| 660 | } | 675 | } |
| 676 | #endif | ||
| 661 | 677 | ||
| 662 | void | 678 | static void |
| 663 | ahd_set_hnscb_qoff(struct ahd_softc *ahd, u_int value) | 679 | ahd_set_hnscb_qoff(struct ahd_softc *ahd, u_int value) |
| 664 | { | 680 | { |
| 665 | ahd_outw_atomic(ahd, HNSCB_QOFF, value); | 681 | ahd_outw_atomic(ahd, HNSCB_QOFF, value); |
| 666 | } | 682 | } |
| 667 | 683 | ||
| 668 | u_int | 684 | #if 0 /* unused */ |
| 685 | static u_int | ||
| 669 | ahd_get_hescb_qoff(struct ahd_softc *ahd) | 686 | ahd_get_hescb_qoff(struct ahd_softc *ahd) |
| 670 | { | 687 | { |
| 671 | return (ahd_inb(ahd, HESCB_QOFF)); | 688 | return (ahd_inb(ahd, HESCB_QOFF)); |
| 672 | } | 689 | } |
| 690 | #endif | ||
| 673 | 691 | ||
| 674 | void | 692 | static void |
| 675 | ahd_set_hescb_qoff(struct ahd_softc *ahd, u_int value) | 693 | ahd_set_hescb_qoff(struct ahd_softc *ahd, u_int value) |
| 676 | { | 694 | { |
| 677 | ahd_outb(ahd, HESCB_QOFF, value); | 695 | ahd_outb(ahd, HESCB_QOFF, value); |
| 678 | } | 696 | } |
| 679 | 697 | ||
| 680 | u_int | 698 | static u_int |
| 681 | ahd_get_snscb_qoff(struct ahd_softc *ahd) | 699 | ahd_get_snscb_qoff(struct ahd_softc *ahd) |
| 682 | { | 700 | { |
| 683 | u_int oldvalue; | 701 | u_int oldvalue; |
| @@ -688,35 +706,39 @@ ahd_get_snscb_qoff(struct ahd_softc *ahd) | |||
| 688 | return (oldvalue); | 706 | return (oldvalue); |
| 689 | } | 707 | } |
| 690 | 708 | ||
| 691 | void | 709 | static void |
| 692 | ahd_set_snscb_qoff(struct ahd_softc *ahd, u_int value) | 710 | ahd_set_snscb_qoff(struct ahd_softc *ahd, u_int value) |
| 693 | { | 711 | { |
| 694 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 712 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); |
| 695 | ahd_outw(ahd, SNSCB_QOFF, value); | 713 | ahd_outw(ahd, SNSCB_QOFF, value); |
| 696 | } | 714 | } |
| 697 | 715 | ||
| 698 | u_int | 716 | #if 0 /* unused */ |
| 717 | static u_int | ||
| 699 | ahd_get_sescb_qoff(struct ahd_softc *ahd) | 718 | ahd_get_sescb_qoff(struct ahd_softc *ahd) |
| 700 | { | 719 | { |
| 701 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 720 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); |
| 702 | return (ahd_inb(ahd, SESCB_QOFF)); | 721 | return (ahd_inb(ahd, SESCB_QOFF)); |
| 703 | } | 722 | } |
| 723 | #endif | ||
| 704 | 724 | ||
| 705 | void | 725 | static void |
| 706 | ahd_set_sescb_qoff(struct ahd_softc *ahd, u_int value) | 726 | ahd_set_sescb_qoff(struct ahd_softc *ahd, u_int value) |
| 707 | { | 727 | { |
| 708 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 728 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); |
| 709 | ahd_outb(ahd, SESCB_QOFF, value); | 729 | ahd_outb(ahd, SESCB_QOFF, value); |
| 710 | } | 730 | } |
| 711 | 731 | ||
| 712 | u_int | 732 | #if 0 /* unused */ |
| 733 | static u_int | ||
| 713 | ahd_get_sdscb_qoff(struct ahd_softc *ahd) | 734 | ahd_get_sdscb_qoff(struct ahd_softc *ahd) |
| 714 | { | 735 | { |
| 715 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 736 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); |
| 716 | return (ahd_inb(ahd, SDSCB_QOFF) | (ahd_inb(ahd, SDSCB_QOFF + 1) << 8)); | 737 | return (ahd_inb(ahd, SDSCB_QOFF) | (ahd_inb(ahd, SDSCB_QOFF + 1) << 8)); |
| 717 | } | 738 | } |
| 739 | #endif | ||
| 718 | 740 | ||
| 719 | void | 741 | static void |
| 720 | ahd_set_sdscb_qoff(struct ahd_softc *ahd, u_int value) | 742 | ahd_set_sdscb_qoff(struct ahd_softc *ahd, u_int value) |
| 721 | { | 743 | { |
| 722 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); | 744 | AHD_ASSERT_MODES(ahd, AHD_MODE_CCHAN_MSK, AHD_MODE_CCHAN_MSK); |
| @@ -756,14 +778,14 @@ ahd_inw_scbram(struct ahd_softc *ahd, u_int offset) | |||
| 756 | | (ahd_inb_scbram(ahd, offset+1) << 8)); | 778 | | (ahd_inb_scbram(ahd, offset+1) << 8)); |
| 757 | } | 779 | } |
| 758 | 780 | ||
| 759 | uint32_t | 781 | static uint32_t |
| 760 | ahd_inl_scbram(struct ahd_softc *ahd, u_int offset) | 782 | ahd_inl_scbram(struct ahd_softc *ahd, u_int offset) |
| 761 | { | 783 | { |
| 762 | return (ahd_inw_scbram(ahd, offset) | 784 | return (ahd_inw_scbram(ahd, offset) |
| 763 | | (ahd_inw_scbram(ahd, offset+2) << 16)); | 785 | | (ahd_inw_scbram(ahd, offset+2) << 16)); |
| 764 | } | 786 | } |
| 765 | 787 | ||
| 766 | uint64_t | 788 | static uint64_t |
| 767 | ahd_inq_scbram(struct ahd_softc *ahd, u_int offset) | 789 | ahd_inq_scbram(struct ahd_softc *ahd, u_int offset) |
| 768 | { | 790 | { |
| 769 | return (ahd_inl_scbram(ahd, offset) | 791 | return (ahd_inl_scbram(ahd, offset) |
| @@ -784,7 +806,7 @@ ahd_lookup_scb(struct ahd_softc *ahd, u_int tag) | |||
| 784 | return (scb); | 806 | return (scb); |
| 785 | } | 807 | } |
| 786 | 808 | ||
| 787 | void | 809 | static void |
| 788 | ahd_swap_with_next_hscb(struct ahd_softc *ahd, struct scb *scb) | 810 | ahd_swap_with_next_hscb(struct ahd_softc *ahd, struct scb *scb) |
| 789 | { | 811 | { |
| 790 | struct hardware_scb *q_hscb; | 812 | struct hardware_scb *q_hscb; |
| @@ -869,7 +891,7 @@ ahd_queue_scb(struct ahd_softc *ahd, struct scb *scb) | |||
| 869 | } | 891 | } |
| 870 | 892 | ||
| 871 | /************************** Interrupt Processing ******************************/ | 893 | /************************** Interrupt Processing ******************************/ |
| 872 | void | 894 | static void |
| 873 | ahd_sync_qoutfifo(struct ahd_softc *ahd, int op) | 895 | ahd_sync_qoutfifo(struct ahd_softc *ahd, int op) |
| 874 | { | 896 | { |
| 875 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, | 897 | ahd_dmamap_sync(ahd, ahd->shared_data_dmat, ahd->shared_data_map.dmamap, |
| @@ -877,7 +899,7 @@ ahd_sync_qoutfifo(struct ahd_softc *ahd, int op) | |||
| 877 | /*len*/AHD_SCB_MAX * sizeof(struct ahd_completion), op); | 899 | /*len*/AHD_SCB_MAX * sizeof(struct ahd_completion), op); |
| 878 | } | 900 | } |
| 879 | 901 | ||
| 880 | void | 902 | static void |
| 881 | ahd_sync_tqinfifo(struct ahd_softc *ahd, int op) | 903 | ahd_sync_tqinfifo(struct ahd_softc *ahd, int op) |
| 882 | { | 904 | { |
| 883 | #ifdef AHD_TARGET_MODE | 905 | #ifdef AHD_TARGET_MODE |
| @@ -897,7 +919,7 @@ ahd_sync_tqinfifo(struct ahd_softc *ahd, int op) | |||
| 897 | */ | 919 | */ |
| 898 | #define AHD_RUN_QOUTFIFO 0x1 | 920 | #define AHD_RUN_QOUTFIFO 0x1 |
| 899 | #define AHD_RUN_TQINFIFO 0x2 | 921 | #define AHD_RUN_TQINFIFO 0x2 |
| 900 | u_int | 922 | static u_int |
| 901 | ahd_check_cmdcmpltqueues(struct ahd_softc *ahd) | 923 | ahd_check_cmdcmpltqueues(struct ahd_softc *ahd) |
| 902 | { | 924 | { |
| 903 | u_int retval; | 925 | u_int retval; |
| @@ -1640,7 +1662,7 @@ clrchn: | |||
| 1640 | * a copy of the first byte (little endian) of the sgptr | 1662 | * a copy of the first byte (little endian) of the sgptr |
| 1641 | * hscb field. | 1663 | * hscb field. |
| 1642 | */ | 1664 | */ |
| 1643 | void | 1665 | static void |
| 1644 | ahd_run_qoutfifo(struct ahd_softc *ahd) | 1666 | ahd_run_qoutfifo(struct ahd_softc *ahd) |
| 1645 | { | 1667 | { |
| 1646 | struct ahd_completion *completion; | 1668 | struct ahd_completion *completion; |
| @@ -1679,7 +1701,7 @@ ahd_run_qoutfifo(struct ahd_softc *ahd) | |||
| 1679 | } | 1701 | } |
| 1680 | 1702 | ||
| 1681 | /************************* Interrupt Handling *********************************/ | 1703 | /************************* Interrupt Handling *********************************/ |
| 1682 | void | 1704 | static void |
| 1683 | ahd_handle_hwerrint(struct ahd_softc *ahd) | 1705 | ahd_handle_hwerrint(struct ahd_softc *ahd) |
| 1684 | { | 1706 | { |
| 1685 | /* | 1707 | /* |
| @@ -1753,7 +1775,7 @@ ahd_dump_sglist(struct scb *scb) | |||
| 1753 | } | 1775 | } |
| 1754 | #endif /* AHD_DEBUG */ | 1776 | #endif /* AHD_DEBUG */ |
| 1755 | 1777 | ||
| 1756 | void | 1778 | static void |
| 1757 | ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat) | 1779 | ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat) |
| 1758 | { | 1780 | { |
| 1759 | u_int seqintcode; | 1781 | u_int seqintcode; |
| @@ -2365,7 +2387,7 @@ ahd_handle_seqint(struct ahd_softc *ahd, u_int intstat) | |||
| 2365 | ahd_unpause(ahd); | 2387 | ahd_unpause(ahd); |
| 2366 | } | 2388 | } |
| 2367 | 2389 | ||
| 2368 | void | 2390 | static void |
| 2369 | ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) | 2391 | ahd_handle_scsiint(struct ahd_softc *ahd, u_int intstat) |
| 2370 | { | 2392 | { |
| 2371 | struct scb *scb; | 2393 | struct scb *scb; |
| @@ -8131,7 +8153,7 @@ ahd_qinfifo_count(struct ahd_softc *ahd) | |||
| 8131 | + ARRAY_SIZE(ahd->qinfifo) - wrap_qinpos); | 8153 | + ARRAY_SIZE(ahd->qinfifo) - wrap_qinpos); |
| 8132 | } | 8154 | } |
| 8133 | 8155 | ||
| 8134 | void | 8156 | static void |
| 8135 | ahd_reset_cmds_pending(struct ahd_softc *ahd) | 8157 | ahd_reset_cmds_pending(struct ahd_softc *ahd) |
| 8136 | { | 8158 | { |
| 8137 | struct scb *scb; | 8159 | struct scb *scb; |
| @@ -9656,7 +9678,7 @@ sized: | |||
| 9656 | } | 9678 | } |
| 9657 | 9679 | ||
| 9658 | int | 9680 | int |
| 9659 | ahd_print_register(ahd_reg_parse_entry_t *table, u_int num_entries, | 9681 | ahd_print_register(const ahd_reg_parse_entry_t *table, u_int num_entries, |
| 9660 | const char *name, u_int address, u_int value, | 9682 | const char *name, u_int address, u_int value, |
| 9661 | u_int *cur_column, u_int wrap_point) | 9683 | u_int *cur_column, u_int wrap_point) |
| 9662 | { | 9684 | { |
| @@ -10647,7 +10669,7 @@ ahd_update_scsiid(struct ahd_softc *ahd, u_int targid_mask) | |||
| 10647 | #endif | 10669 | #endif |
| 10648 | } | 10670 | } |
| 10649 | 10671 | ||
| 10650 | void | 10672 | static void |
| 10651 | ahd_run_tqinfifo(struct ahd_softc *ahd, int paused) | 10673 | ahd_run_tqinfifo(struct ahd_softc *ahd, int paused) |
| 10652 | { | 10674 | { |
| 10653 | struct target_cmd *cmd; | 10675 | struct target_cmd *cmd; |
diff --git a/drivers/scsi/aic7xxx/aic79xx_inline.h b/drivers/scsi/aic7xxx/aic79xx_inline.h index 875137262156..5f12cf9d99d0 100644 --- a/drivers/scsi/aic7xxx/aic79xx_inline.h +++ b/drivers/scsi/aic7xxx/aic79xx_inline.h | |||
| @@ -66,10 +66,6 @@ static __inline void ahd_extract_mode_state(struct ahd_softc *ahd, | |||
| 66 | 66 | ||
| 67 | void ahd_set_modes(struct ahd_softc *ahd, ahd_mode src, | 67 | void ahd_set_modes(struct ahd_softc *ahd, ahd_mode src, |
| 68 | ahd_mode dst); | 68 | ahd_mode dst); |
| 69 | void ahd_update_modes(struct ahd_softc *ahd); | ||
| 70 | void ahd_assert_modes(struct ahd_softc *ahd, ahd_mode srcmode, | ||
| 71 | ahd_mode dstmode, const char *file, | ||
| 72 | int line); | ||
| 73 | ahd_mode_state ahd_save_modes(struct ahd_softc *ahd); | 69 | ahd_mode_state ahd_save_modes(struct ahd_softc *ahd); |
| 74 | void ahd_restore_modes(struct ahd_softc *ahd, | 70 | void ahd_restore_modes(struct ahd_softc *ahd, |
| 75 | ahd_mode_state state); | 71 | ahd_mode_state state); |
| @@ -104,33 +100,12 @@ ahd_extract_mode_state(struct ahd_softc *ahd, ahd_mode_state state, | |||
| 104 | void *ahd_sg_setup(struct ahd_softc *ahd, struct scb *scb, | 100 | void *ahd_sg_setup(struct ahd_softc *ahd, struct scb *scb, |
| 105 | void *sgptr, dma_addr_t addr, | 101 | void *sgptr, dma_addr_t addr, |
| 106 | bus_size_t len, int last); | 102 | bus_size_t len, int last); |
| 107 | void ahd_setup_scb_common(struct ahd_softc *ahd, | ||
| 108 | struct scb *scb); | ||
| 109 | void ahd_setup_data_scb(struct ahd_softc *ahd, | ||
| 110 | struct scb *scb); | ||
| 111 | void ahd_setup_noxfer_scb(struct ahd_softc *ahd, | ||
| 112 | struct scb *scb); | ||
| 113 | 103 | ||
| 114 | /************************** Memory mapping routines ***************************/ | 104 | /************************** Memory mapping routines ***************************/ |
| 115 | static __inline size_t ahd_sg_size(struct ahd_softc *ahd); | 105 | static __inline size_t ahd_sg_size(struct ahd_softc *ahd); |
| 116 | 106 | ||
| 117 | void * | ||
| 118 | ahd_sg_bus_to_virt(struct ahd_softc *ahd, | ||
| 119 | struct scb *scb, | ||
| 120 | uint32_t sg_busaddr); | ||
| 121 | uint32_t | ||
| 122 | ahd_sg_virt_to_bus(struct ahd_softc *ahd, | ||
| 123 | struct scb *scb, | ||
| 124 | void *sg); | ||
| 125 | void ahd_sync_scb(struct ahd_softc *ahd, | ||
| 126 | struct scb *scb, int op); | ||
| 127 | void ahd_sync_sglist(struct ahd_softc *ahd, | 107 | void ahd_sync_sglist(struct ahd_softc *ahd, |
| 128 | struct scb *scb, int op); | 108 | struct scb *scb, int op); |
| 129 | void ahd_sync_sense(struct ahd_softc *ahd, | ||
| 130 | struct scb *scb, int op); | ||
| 131 | uint32_t | ||
| 132 | ahd_targetcmd_offset(struct ahd_softc *ahd, | ||
| 133 | u_int index); | ||
| 134 | 109 | ||
| 135 | static __inline size_t | 110 | static __inline size_t |
| 136 | ahd_sg_size(struct ahd_softc *ahd) | 111 | ahd_sg_size(struct ahd_softc *ahd) |
| @@ -160,26 +135,10 @@ void ahd_outq(struct ahd_softc *ahd, u_int port, | |||
| 160 | uint64_t value); | 135 | uint64_t value); |
| 161 | u_int ahd_get_scbptr(struct ahd_softc *ahd); | 136 | u_int ahd_get_scbptr(struct ahd_softc *ahd); |
| 162 | void ahd_set_scbptr(struct ahd_softc *ahd, u_int scbptr); | 137 | void ahd_set_scbptr(struct ahd_softc *ahd, u_int scbptr); |
| 163 | u_int ahd_get_hnscb_qoff(struct ahd_softc *ahd); | ||
| 164 | void ahd_set_hnscb_qoff(struct ahd_softc *ahd, u_int value); | ||
| 165 | u_int ahd_get_hescb_qoff(struct ahd_softc *ahd); | ||
| 166 | void ahd_set_hescb_qoff(struct ahd_softc *ahd, u_int value); | ||
| 167 | u_int ahd_get_snscb_qoff(struct ahd_softc *ahd); | ||
| 168 | void ahd_set_snscb_qoff(struct ahd_softc *ahd, u_int value); | ||
| 169 | u_int ahd_get_sescb_qoff(struct ahd_softc *ahd); | ||
| 170 | void ahd_set_sescb_qoff(struct ahd_softc *ahd, u_int value); | ||
| 171 | u_int ahd_get_sdscb_qoff(struct ahd_softc *ahd); | ||
| 172 | void ahd_set_sdscb_qoff(struct ahd_softc *ahd, u_int value); | ||
| 173 | u_int ahd_inb_scbram(struct ahd_softc *ahd, u_int offset); | 138 | u_int ahd_inb_scbram(struct ahd_softc *ahd, u_int offset); |
| 174 | u_int ahd_inw_scbram(struct ahd_softc *ahd, u_int offset); | 139 | u_int ahd_inw_scbram(struct ahd_softc *ahd, u_int offset); |
| 175 | uint32_t | ||
| 176 | ahd_inl_scbram(struct ahd_softc *ahd, u_int offset); | ||
| 177 | uint64_t | ||
| 178 | ahd_inq_scbram(struct ahd_softc *ahd, u_int offset); | ||
| 179 | struct scb * | 140 | struct scb * |
| 180 | ahd_lookup_scb(struct ahd_softc *ahd, u_int tag); | 141 | ahd_lookup_scb(struct ahd_softc *ahd, u_int tag); |
| 181 | void ahd_swap_with_next_hscb(struct ahd_softc *ahd, | ||
| 182 | struct scb *scb); | ||
| 183 | void ahd_queue_scb(struct ahd_softc *ahd, struct scb *scb); | 142 | void ahd_queue_scb(struct ahd_softc *ahd, struct scb *scb); |
| 184 | 143 | ||
| 185 | static __inline uint8_t * | 144 | static __inline uint8_t * |
| @@ -212,9 +171,6 @@ ahd_get_sense_bufaddr(struct ahd_softc *ahd, struct scb *scb) | |||
| 212 | } | 171 | } |
| 213 | 172 | ||
| 214 | /************************** Interrupt Processing ******************************/ | 173 | /************************** Interrupt Processing ******************************/ |
| 215 | void ahd_sync_qoutfifo(struct ahd_softc *ahd, int op); | ||
| 216 | void ahd_sync_tqinfifo(struct ahd_softc *ahd, int op); | ||
| 217 | u_int ahd_check_cmdcmpltqueues(struct ahd_softc *ahd); | ||
| 218 | int ahd_intr(struct ahd_softc *ahd); | 174 | int ahd_intr(struct ahd_softc *ahd); |
| 219 | 175 | ||
| 220 | #endif /* _AIC79XX_INLINE_H_ */ | 176 | #endif /* _AIC79XX_INLINE_H_ */ |
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index 6c5287722465..ea0bbda47324 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
| @@ -388,7 +388,6 @@ ahd_delay(long usec) | |||
| 388 | 388 | ||
| 389 | /***************************** Low Level I/O **********************************/ | 389 | /***************************** Low Level I/O **********************************/ |
| 390 | uint8_t ahd_inb(struct ahd_softc * ahd, long port); | 390 | uint8_t ahd_inb(struct ahd_softc * ahd, long port); |
| 391 | uint16_t ahd_inw_atomic(struct ahd_softc * ahd, long port); | ||
| 392 | void ahd_outb(struct ahd_softc * ahd, long port, uint8_t val); | 391 | void ahd_outb(struct ahd_softc * ahd, long port, uint8_t val); |
| 393 | void ahd_outw_atomic(struct ahd_softc * ahd, | 392 | void ahd_outw_atomic(struct ahd_softc * ahd, |
| 394 | long port, uint16_t val); | 393 | long port, uint16_t val); |
| @@ -411,7 +410,8 @@ ahd_inb(struct ahd_softc * ahd, long port) | |||
| 411 | return (x); | 410 | return (x); |
| 412 | } | 411 | } |
| 413 | 412 | ||
| 414 | uint16_t | 413 | #if 0 /* unused */ |
| 414 | static uint16_t | ||
| 415 | ahd_inw_atomic(struct ahd_softc * ahd, long port) | 415 | ahd_inw_atomic(struct ahd_softc * ahd, long port) |
| 416 | { | 416 | { |
| 417 | uint8_t x; | 417 | uint8_t x; |
| @@ -424,6 +424,7 @@ ahd_inw_atomic(struct ahd_softc * ahd, long port) | |||
| 424 | mb(); | 424 | mb(); |
| 425 | return (x); | 425 | return (x); |
| 426 | } | 426 | } |
| 427 | #endif | ||
| 427 | 428 | ||
| 428 | void | 429 | void |
| 429 | ahd_outb(struct ahd_softc * ahd, long port, uint8_t val) | 430 | ahd_outb(struct ahd_softc * ahd, long port, uint8_t val) |
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.h b/drivers/scsi/aic7xxx/aic79xx_osm.h index 08dd18229b45..8d6612c19922 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.h +++ b/drivers/scsi/aic7xxx/aic79xx_osm.h | |||
| @@ -374,7 +374,6 @@ void ahd_delay(long); | |||
| 374 | 374 | ||
| 375 | /***************************** Low Level I/O **********************************/ | 375 | /***************************** Low Level I/O **********************************/ |
| 376 | uint8_t ahd_inb(struct ahd_softc * ahd, long port); | 376 | uint8_t ahd_inb(struct ahd_softc * ahd, long port); |
| 377 | uint16_t ahd_inw_atomic(struct ahd_softc * ahd, long port); | ||
| 378 | void ahd_outb(struct ahd_softc * ahd, long port, uint8_t val); | 377 | void ahd_outb(struct ahd_softc * ahd, long port, uint8_t val); |
| 379 | void ahd_outw_atomic(struct ahd_softc * ahd, | 378 | void ahd_outw_atomic(struct ahd_softc * ahd, |
| 380 | long port, uint16_t val); | 379 | long port, uint16_t val); |
diff --git a/drivers/scsi/aic7xxx/aic79xx_pci.c b/drivers/scsi/aic7xxx/aic79xx_pci.c index c9f79fdf9131..0bb352573f57 100644 --- a/drivers/scsi/aic7xxx/aic79xx_pci.c +++ b/drivers/scsi/aic7xxx/aic79xx_pci.c | |||
| @@ -97,7 +97,7 @@ static ahd_device_setup_t ahd_aic7901A_setup; | |||
| 97 | static ahd_device_setup_t ahd_aic7902_setup; | 97 | static ahd_device_setup_t ahd_aic7902_setup; |
| 98 | static ahd_device_setup_t ahd_aic790X_setup; | 98 | static ahd_device_setup_t ahd_aic790X_setup; |
| 99 | 99 | ||
| 100 | static struct ahd_pci_identity ahd_pci_ident_table [] = | 100 | static struct ahd_pci_identity ahd_pci_ident_table[] = |
| 101 | { | 101 | { |
| 102 | /* aic7901 based controllers */ | 102 | /* aic7901 based controllers */ |
| 103 | { | 103 | { |
diff --git a/drivers/scsi/aic7xxx/aic7xxx.h b/drivers/scsi/aic7xxx/aic7xxx.h index c0344e617651..862e0fbffa42 100644 --- a/drivers/scsi/aic7xxx/aic7xxx.h +++ b/drivers/scsi/aic7xxx/aic7xxx.h | |||
| @@ -736,7 +736,7 @@ struct ahc_syncrate { | |||
| 736 | #define ST_SXFR 0x010 /* Rate Single Transition Only */ | 736 | #define ST_SXFR 0x010 /* Rate Single Transition Only */ |
| 737 | #define DT_SXFR 0x040 /* Rate Double Transition Only */ | 737 | #define DT_SXFR 0x040 /* Rate Double Transition Only */ |
| 738 | uint8_t period; /* Period to send to SCSI target */ | 738 | uint8_t period; /* Period to send to SCSI target */ |
| 739 | char *rate; | 739 | const char *rate; |
| 740 | }; | 740 | }; |
| 741 | 741 | ||
| 742 | /* Safe and valid period for async negotiations. */ | 742 | /* Safe and valid period for async negotiations. */ |
| @@ -1133,10 +1133,6 @@ extern const int ahc_num_aic7770_devs; | |||
| 1133 | 1133 | ||
| 1134 | /*************************** Function Declarations ****************************/ | 1134 | /*************************** Function Declarations ****************************/ |
| 1135 | /******************************************************************************/ | 1135 | /******************************************************************************/ |
| 1136 | u_int ahc_index_busy_tcl(struct ahc_softc *ahc, u_int tcl); | ||
| 1137 | void ahc_unbusy_tcl(struct ahc_softc *ahc, u_int tcl); | ||
| 1138 | void ahc_busy_tcl(struct ahc_softc *ahc, | ||
| 1139 | u_int tcl, u_int busyid); | ||
| 1140 | 1136 | ||
| 1141 | /***************************** PCI Front End *********************************/ | 1137 | /***************************** PCI Front End *********************************/ |
| 1142 | struct ahc_pci_identity *ahc_find_pci_device(ahc_dev_softc_t); | 1138 | struct ahc_pci_identity *ahc_find_pci_device(ahc_dev_softc_t); |
| @@ -1155,9 +1151,6 @@ int aic7770_config(struct ahc_softc *ahc, | |||
| 1155 | 1151 | ||
| 1156 | /************************** SCB and SCB queue management **********************/ | 1152 | /************************** SCB and SCB queue management **********************/ |
| 1157 | int ahc_probe_scbs(struct ahc_softc *); | 1153 | int ahc_probe_scbs(struct ahc_softc *); |
| 1158 | void ahc_run_untagged_queues(struct ahc_softc *ahc); | ||
| 1159 | void ahc_run_untagged_queue(struct ahc_softc *ahc, | ||
| 1160 | struct scb_tailq *queue); | ||
| 1161 | void ahc_qinfifo_requeue_tail(struct ahc_softc *ahc, | 1154 | void ahc_qinfifo_requeue_tail(struct ahc_softc *ahc, |
| 1162 | struct scb *scb); | 1155 | struct scb *scb); |
| 1163 | int ahc_match_scb(struct ahc_softc *ahc, struct scb *scb, | 1156 | int ahc_match_scb(struct ahc_softc *ahc, struct scb *scb, |
| @@ -1178,22 +1171,8 @@ int ahc_resume(struct ahc_softc *ahc); | |||
| 1178 | #endif | 1171 | #endif |
| 1179 | void ahc_set_unit(struct ahc_softc *, int); | 1172 | void ahc_set_unit(struct ahc_softc *, int); |
| 1180 | void ahc_set_name(struct ahc_softc *, char *); | 1173 | void ahc_set_name(struct ahc_softc *, char *); |
| 1181 | void ahc_alloc_scbs(struct ahc_softc *ahc); | ||
| 1182 | void ahc_free(struct ahc_softc *ahc); | 1174 | void ahc_free(struct ahc_softc *ahc); |
| 1183 | int ahc_reset(struct ahc_softc *ahc, int reinit); | 1175 | int ahc_reset(struct ahc_softc *ahc, int reinit); |
| 1184 | void ahc_shutdown(void *arg); | ||
| 1185 | |||
| 1186 | /*************************** Interrupt Services *******************************/ | ||
| 1187 | void ahc_clear_intstat(struct ahc_softc *ahc); | ||
| 1188 | void ahc_run_qoutfifo(struct ahc_softc *ahc); | ||
| 1189 | #ifdef AHC_TARGET_MODE | ||
| 1190 | void ahc_run_tqinfifo(struct ahc_softc *ahc, int paused); | ||
| 1191 | #endif | ||
| 1192 | void ahc_handle_brkadrint(struct ahc_softc *ahc); | ||
| 1193 | void ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat); | ||
| 1194 | void ahc_handle_scsiint(struct ahc_softc *ahc, | ||
| 1195 | u_int intstat); | ||
| 1196 | void ahc_clear_critical_section(struct ahc_softc *ahc); | ||
| 1197 | 1176 | ||
| 1198 | /***************************** Error Recovery *********************************/ | 1177 | /***************************** Error Recovery *********************************/ |
| 1199 | typedef enum { | 1178 | typedef enum { |
| @@ -1214,36 +1193,19 @@ int ahc_search_disc_list(struct ahc_softc *ahc, int target, | |||
| 1214 | char channel, int lun, u_int tag, | 1193 | char channel, int lun, u_int tag, |
| 1215 | int stop_on_first, int remove, | 1194 | int stop_on_first, int remove, |
| 1216 | int save_state); | 1195 | int save_state); |
| 1217 | void ahc_freeze_devq(struct ahc_softc *ahc, struct scb *scb); | ||
| 1218 | int ahc_reset_channel(struct ahc_softc *ahc, char channel, | 1196 | int ahc_reset_channel(struct ahc_softc *ahc, char channel, |
| 1219 | int initiate_reset); | 1197 | int initiate_reset); |
| 1220 | int ahc_abort_scbs(struct ahc_softc *ahc, int target, | 1198 | |
| 1221 | char channel, int lun, u_int tag, | ||
| 1222 | role_t role, uint32_t status); | ||
| 1223 | void ahc_restart(struct ahc_softc *ahc); | ||
| 1224 | void ahc_calc_residual(struct ahc_softc *ahc, | ||
| 1225 | struct scb *scb); | ||
| 1226 | /*************************** Utility Functions ********************************/ | 1199 | /*************************** Utility Functions ********************************/ |
| 1227 | struct ahc_phase_table_entry* | ||
| 1228 | ahc_lookup_phase_entry(int phase); | ||
| 1229 | void ahc_compile_devinfo(struct ahc_devinfo *devinfo, | 1200 | void ahc_compile_devinfo(struct ahc_devinfo *devinfo, |
| 1230 | u_int our_id, u_int target, | 1201 | u_int our_id, u_int target, |
| 1231 | u_int lun, char channel, | 1202 | u_int lun, char channel, |
| 1232 | role_t role); | 1203 | role_t role); |
| 1233 | /************************** Transfer Negotiation ******************************/ | 1204 | /************************** Transfer Negotiation ******************************/ |
| 1234 | struct ahc_syncrate* ahc_find_syncrate(struct ahc_softc *ahc, u_int *period, | 1205 | const struct ahc_syncrate* ahc_find_syncrate(struct ahc_softc *ahc, u_int *period, |
| 1235 | u_int *ppr_options, u_int maxsync); | 1206 | u_int *ppr_options, u_int maxsync); |
| 1236 | u_int ahc_find_period(struct ahc_softc *ahc, | 1207 | u_int ahc_find_period(struct ahc_softc *ahc, |
| 1237 | u_int scsirate, u_int maxsync); | 1208 | u_int scsirate, u_int maxsync); |
| 1238 | void ahc_validate_offset(struct ahc_softc *ahc, | ||
| 1239 | struct ahc_initiator_tinfo *tinfo, | ||
| 1240 | struct ahc_syncrate *syncrate, | ||
| 1241 | u_int *offset, int wide, | ||
| 1242 | role_t role); | ||
| 1243 | void ahc_validate_width(struct ahc_softc *ahc, | ||
| 1244 | struct ahc_initiator_tinfo *tinfo, | ||
| 1245 | u_int *bus_width, | ||
| 1246 | role_t role); | ||
| 1247 | /* | 1209 | /* |
| 1248 | * Negotiation types. These are used to qualify if we should renegotiate | 1210 | * Negotiation types. These are used to qualify if we should renegotiate |
| 1249 | * even if our goal and current transport parameters are identical. | 1211 | * even if our goal and current transport parameters are identical. |
| @@ -1263,7 +1225,7 @@ void ahc_set_width(struct ahc_softc *ahc, | |||
| 1263 | u_int width, u_int type, int paused); | 1225 | u_int width, u_int type, int paused); |
| 1264 | void ahc_set_syncrate(struct ahc_softc *ahc, | 1226 | void ahc_set_syncrate(struct ahc_softc *ahc, |
| 1265 | struct ahc_devinfo *devinfo, | 1227 | struct ahc_devinfo *devinfo, |
| 1266 | struct ahc_syncrate *syncrate, | 1228 | const struct ahc_syncrate *syncrate, |
| 1267 | u_int period, u_int offset, | 1229 | u_int period, u_int offset, |
| 1268 | u_int ppr_options, | 1230 | u_int ppr_options, |
| 1269 | u_int type, int paused); | 1231 | u_int type, int paused); |
| @@ -1305,11 +1267,10 @@ extern uint32_t ahc_debug; | |||
| 1305 | #define AHC_SHOW_MASKED_ERRORS 0x1000 | 1267 | #define AHC_SHOW_MASKED_ERRORS 0x1000 |
| 1306 | #define AHC_DEBUG_SEQUENCER 0x2000 | 1268 | #define AHC_DEBUG_SEQUENCER 0x2000 |
| 1307 | #endif | 1269 | #endif |
| 1308 | void ahc_print_scb(struct scb *scb); | ||
| 1309 | void ahc_print_devinfo(struct ahc_softc *ahc, | 1270 | void ahc_print_devinfo(struct ahc_softc *ahc, |
| 1310 | struct ahc_devinfo *dev); | 1271 | struct ahc_devinfo *dev); |
| 1311 | void ahc_dump_card_state(struct ahc_softc *ahc); | 1272 | void ahc_dump_card_state(struct ahc_softc *ahc); |
| 1312 | int ahc_print_register(ahc_reg_parse_entry_t *table, | 1273 | int ahc_print_register(const ahc_reg_parse_entry_t *table, |
| 1313 | u_int num_entries, | 1274 | u_int num_entries, |
| 1314 | const char *name, | 1275 | const char *name, |
| 1315 | u_int address, | 1276 | u_int address, |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_core.c b/drivers/scsi/aic7xxx/aic7xxx_core.c index d1d006b8b3a9..62417ed17cf3 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_core.c +++ b/drivers/scsi/aic7xxx/aic7xxx_core.c | |||
| @@ -51,8 +51,7 @@ | |||
| 51 | #endif | 51 | #endif |
| 52 | 52 | ||
| 53 | /***************************** Lookup Tables **********************************/ | 53 | /***************************** Lookup Tables **********************************/ |
| 54 | char *ahc_chip_names[] = | 54 | static const char *const ahc_chip_names[] = { |
| 55 | { | ||
| 56 | "NONE", | 55 | "NONE", |
| 57 | "aic7770", | 56 | "aic7770", |
| 58 | "aic7850", | 57 | "aic7850", |
| @@ -75,10 +74,10 @@ static const u_int num_chip_names = ARRAY_SIZE(ahc_chip_names); | |||
| 75 | */ | 74 | */ |
| 76 | struct ahc_hard_error_entry { | 75 | struct ahc_hard_error_entry { |
| 77 | uint8_t errno; | 76 | uint8_t errno; |
| 78 | char *errmesg; | 77 | const char *errmesg; |
| 79 | }; | 78 | }; |
| 80 | 79 | ||
| 81 | static struct ahc_hard_error_entry ahc_hard_errors[] = { | 80 | static const struct ahc_hard_error_entry ahc_hard_errors[] = { |
| 82 | { ILLHADDR, "Illegal Host Access" }, | 81 | { ILLHADDR, "Illegal Host Access" }, |
| 83 | { ILLSADDR, "Illegal Sequencer Address referrenced" }, | 82 | { ILLSADDR, "Illegal Sequencer Address referrenced" }, |
| 84 | { ILLOPCODE, "Illegal Opcode in sequencer program" }, | 83 | { ILLOPCODE, "Illegal Opcode in sequencer program" }, |
| @@ -90,7 +89,7 @@ static struct ahc_hard_error_entry ahc_hard_errors[] = { | |||
| 90 | }; | 89 | }; |
| 91 | static const u_int num_errors = ARRAY_SIZE(ahc_hard_errors); | 90 | static const u_int num_errors = ARRAY_SIZE(ahc_hard_errors); |
| 92 | 91 | ||
| 93 | static struct ahc_phase_table_entry ahc_phase_table[] = | 92 | static const struct ahc_phase_table_entry ahc_phase_table[] = |
| 94 | { | 93 | { |
| 95 | { P_DATAOUT, MSG_NOOP, "in Data-out phase" }, | 94 | { P_DATAOUT, MSG_NOOP, "in Data-out phase" }, |
| 96 | { P_DATAIN, MSG_INITIATOR_DET_ERR, "in Data-in phase" }, | 95 | { P_DATAIN, MSG_INITIATOR_DET_ERR, "in Data-in phase" }, |
| @@ -115,7 +114,7 @@ static const u_int num_phases = ARRAY_SIZE(ahc_phase_table) - 1; | |||
| 115 | * Provides a mapping of tranfer periods in ns to the proper value to | 114 | * Provides a mapping of tranfer periods in ns to the proper value to |
| 116 | * stick in the scsixfer reg. | 115 | * stick in the scsixfer reg. |
| 117 | */ | 116 | */ |
| 118 | static struct ahc_syncrate ahc_syncrates[] = | 117 | static const struct ahc_syncrate ahc_syncrates[] = |
| 119 | { | 118 | { |
| 120 | /* ultra2 fast/ultra period rate */ | 119 | /* ultra2 fast/ultra period rate */ |
| 121 | { 0x42, 0x000, 9, "80.0" }, | 120 | { 0x42, 0x000, 9, "80.0" }, |
| @@ -148,7 +147,7 @@ static struct ahc_tmode_tstate* | |||
| 148 | static void ahc_free_tstate(struct ahc_softc *ahc, | 147 | static void ahc_free_tstate(struct ahc_softc *ahc, |
| 149 | u_int scsi_id, char channel, int force); | 148 | u_int scsi_id, char channel, int force); |
| 150 | #endif | 149 | #endif |
| 151 | static struct ahc_syncrate* | 150 | static const struct ahc_syncrate* |
| 152 | ahc_devlimited_syncrate(struct ahc_softc *ahc, | 151 | ahc_devlimited_syncrate(struct ahc_softc *ahc, |
| 153 | struct ahc_initiator_tinfo *, | 152 | struct ahc_initiator_tinfo *, |
| 154 | u_int *period, | 153 | u_int *period, |
| @@ -204,9 +203,9 @@ static void ahc_setup_target_msgin(struct ahc_softc *ahc, | |||
| 204 | #endif | 203 | #endif |
| 205 | 204 | ||
| 206 | static bus_dmamap_callback_t ahc_dmamap_cb; | 205 | static bus_dmamap_callback_t ahc_dmamap_cb; |
| 207 | static void ahc_build_free_scb_list(struct ahc_softc *ahc); | 206 | static void ahc_build_free_scb_list(struct ahc_softc *ahc); |
| 208 | static int ahc_init_scbdata(struct ahc_softc *ahc); | 207 | static int ahc_init_scbdata(struct ahc_softc *ahc); |
| 209 | static void ahc_fini_scbdata(struct ahc_softc *ahc); | 208 | static void ahc_fini_scbdata(struct ahc_softc *ahc); |
| 210 | static void ahc_qinfifo_requeue(struct ahc_softc *ahc, | 209 | static void ahc_qinfifo_requeue(struct ahc_softc *ahc, |
| 211 | struct scb *prev_scb, | 210 | struct scb *prev_scb, |
| 212 | struct scb *scb); | 211 | struct scb *scb); |
| @@ -238,6 +237,71 @@ static int ahc_handle_target_cmd(struct ahc_softc *ahc, | |||
| 238 | struct target_cmd *cmd); | 237 | struct target_cmd *cmd); |
| 239 | #endif | 238 | #endif |
| 240 | 239 | ||
| 240 | static u_int ahc_index_busy_tcl(struct ahc_softc *ahc, u_int tcl); | ||
| 241 | static void ahc_unbusy_tcl(struct ahc_softc *ahc, u_int tcl); | ||
| 242 | static void ahc_busy_tcl(struct ahc_softc *ahc, | ||
| 243 | u_int tcl, u_int busyid); | ||
| 244 | |||
| 245 | /************************** SCB and SCB queue management **********************/ | ||
| 246 | static void ahc_run_untagged_queues(struct ahc_softc *ahc); | ||
| 247 | static void ahc_run_untagged_queue(struct ahc_softc *ahc, | ||
| 248 | struct scb_tailq *queue); | ||
| 249 | |||
| 250 | /****************************** Initialization ********************************/ | ||
| 251 | static void ahc_alloc_scbs(struct ahc_softc *ahc); | ||
| 252 | static void ahc_shutdown(void *arg); | ||
| 253 | |||
| 254 | /*************************** Interrupt Services *******************************/ | ||
| 255 | static void ahc_clear_intstat(struct ahc_softc *ahc); | ||
| 256 | static void ahc_run_qoutfifo(struct ahc_softc *ahc); | ||
| 257 | #ifdef AHC_TARGET_MODE | ||
| 258 | static void ahc_run_tqinfifo(struct ahc_softc *ahc, int paused); | ||
| 259 | #endif | ||
| 260 | static void ahc_handle_brkadrint(struct ahc_softc *ahc); | ||
| 261 | static void ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat); | ||
| 262 | static void ahc_handle_scsiint(struct ahc_softc *ahc, | ||
| 263 | u_int intstat); | ||
| 264 | static void ahc_clear_critical_section(struct ahc_softc *ahc); | ||
| 265 | |||
| 266 | /***************************** Error Recovery *********************************/ | ||
| 267 | static void ahc_freeze_devq(struct ahc_softc *ahc, struct scb *scb); | ||
| 268 | static int ahc_abort_scbs(struct ahc_softc *ahc, int target, | ||
| 269 | char channel, int lun, u_int tag, | ||
| 270 | role_t role, uint32_t status); | ||
| 271 | static void ahc_calc_residual(struct ahc_softc *ahc, | ||
| 272 | struct scb *scb); | ||
| 273 | |||
| 274 | /*********************** Untagged Transaction Routines ************************/ | ||
| 275 | static inline void ahc_freeze_untagged_queues(struct ahc_softc *ahc); | ||
| 276 | static inline void ahc_release_untagged_queues(struct ahc_softc *ahc); | ||
| 277 | |||
| 278 | /* | ||
| 279 | * Block our completion routine from starting the next untagged | ||
| 280 | * transaction for this target or target lun. | ||
| 281 | */ | ||
| 282 | static inline void | ||
| 283 | ahc_freeze_untagged_queues(struct ahc_softc *ahc) | ||
| 284 | { | ||
| 285 | if ((ahc->flags & AHC_SCB_BTT) == 0) | ||
| 286 | ahc->untagged_queue_lock++; | ||
| 287 | } | ||
| 288 | |||
| 289 | /* | ||
| 290 | * Allow the next untagged transaction for this target or target lun | ||
| 291 | * to be executed. We use a counting semaphore to allow the lock | ||
| 292 | * to be acquired recursively. Once the count drops to zero, the | ||
| 293 | * transaction queues will be run. | ||
| 294 | */ | ||
| 295 | static inline void | ||
| 296 | ahc_release_untagged_queues(struct ahc_softc *ahc) | ||
| 297 | { | ||
| 298 | if ((ahc->flags & AHC_SCB_BTT) == 0) { | ||
| 299 | ahc->untagged_queue_lock--; | ||
| 300 | if (ahc->untagged_queue_lock == 0) | ||
| 301 | ahc_run_untagged_queues(ahc); | ||
| 302 | } | ||
| 303 | } | ||
| 304 | |||
| 241 | /************************* Sequencer Execution Control ************************/ | 305 | /************************* Sequencer Execution Control ************************/ |
| 242 | /* | 306 | /* |
| 243 | * Work around any chip bugs related to halting sequencer execution. | 307 | * Work around any chip bugs related to halting sequencer execution. |
| @@ -247,7 +311,7 @@ static int ahc_handle_target_cmd(struct ahc_softc *ahc, | |||
| 247 | * manual pause while accessing scb ram, accesses to certain registers | 311 | * manual pause while accessing scb ram, accesses to certain registers |
| 248 | * will hang the system (infinite pci retries). | 312 | * will hang the system (infinite pci retries). |
| 249 | */ | 313 | */ |
| 250 | void | 314 | static void |
| 251 | ahc_pause_bug_fix(struct ahc_softc *ahc) | 315 | ahc_pause_bug_fix(struct ahc_softc *ahc) |
| 252 | { | 316 | { |
| 253 | if ((ahc->features & AHC_ULTRA2) != 0) | 317 | if ((ahc->features & AHC_ULTRA2) != 0) |
| @@ -304,7 +368,7 @@ ahc_unpause(struct ahc_softc *ahc) | |||
| 304 | } | 368 | } |
| 305 | 369 | ||
| 306 | /************************** Memory mapping routines ***************************/ | 370 | /************************** Memory mapping routines ***************************/ |
| 307 | struct ahc_dma_seg * | 371 | static struct ahc_dma_seg * |
| 308 | ahc_sg_bus_to_virt(struct scb *scb, uint32_t sg_busaddr) | 372 | ahc_sg_bus_to_virt(struct scb *scb, uint32_t sg_busaddr) |
| 309 | { | 373 | { |
| 310 | int sg_index; | 374 | int sg_index; |
| @@ -316,7 +380,7 @@ ahc_sg_bus_to_virt(struct scb *scb, uint32_t sg_busaddr) | |||
| 316 | return (&scb->sg_list[sg_index]); | 380 | return (&scb->sg_list[sg_index]); |
| 317 | } | 381 | } |
| 318 | 382 | ||
| 319 | uint32_t | 383 | static uint32_t |
| 320 | ahc_sg_virt_to_bus(struct scb *scb, struct ahc_dma_seg *sg) | 384 | ahc_sg_virt_to_bus(struct scb *scb, struct ahc_dma_seg *sg) |
| 321 | { | 385 | { |
| 322 | int sg_index; | 386 | int sg_index; |
| @@ -327,14 +391,14 @@ ahc_sg_virt_to_bus(struct scb *scb, struct ahc_dma_seg *sg) | |||
| 327 | return (scb->sg_list_phys + (sg_index * sizeof(*scb->sg_list))); | 391 | return (scb->sg_list_phys + (sg_index * sizeof(*scb->sg_list))); |
| 328 | } | 392 | } |
| 329 | 393 | ||
| 330 | uint32_t | 394 | static uint32_t |
| 331 | ahc_hscb_busaddr(struct ahc_softc *ahc, u_int index) | 395 | ahc_hscb_busaddr(struct ahc_softc *ahc, u_int index) |
| 332 | { | 396 | { |
| 333 | return (ahc->scb_data->hscb_busaddr | 397 | return (ahc->scb_data->hscb_busaddr |
| 334 | + (sizeof(struct hardware_scb) * index)); | 398 | + (sizeof(struct hardware_scb) * index)); |
| 335 | } | 399 | } |
| 336 | 400 | ||
| 337 | void | 401 | static void |
| 338 | ahc_sync_scb(struct ahc_softc *ahc, struct scb *scb, int op) | 402 | ahc_sync_scb(struct ahc_softc *ahc, struct scb *scb, int op) |
| 339 | { | 403 | { |
| 340 | ahc_dmamap_sync(ahc, ahc->scb_data->hscb_dmat, | 404 | ahc_dmamap_sync(ahc, ahc->scb_data->hscb_dmat, |
| @@ -355,18 +419,20 @@ ahc_sync_sglist(struct ahc_softc *ahc, struct scb *scb, int op) | |||
| 355 | /*len*/sizeof(struct ahc_dma_seg) * scb->sg_count, op); | 419 | /*len*/sizeof(struct ahc_dma_seg) * scb->sg_count, op); |
| 356 | } | 420 | } |
| 357 | 421 | ||
| 358 | uint32_t | 422 | #ifdef AHC_TARGET_MODE |
| 423 | static uint32_t | ||
| 359 | ahc_targetcmd_offset(struct ahc_softc *ahc, u_int index) | 424 | ahc_targetcmd_offset(struct ahc_softc *ahc, u_int index) |
| 360 | { | 425 | { |
| 361 | return (((uint8_t *)&ahc->targetcmds[index]) - ahc->qoutfifo); | 426 | return (((uint8_t *)&ahc->targetcmds[index]) - ahc->qoutfifo); |
| 362 | } | 427 | } |
| 428 | #endif | ||
| 363 | 429 | ||
| 364 | /*********************** Miscelaneous Support Functions ***********************/ | 430 | /*********************** Miscelaneous Support Functions ***********************/ |
| 365 | /* | 431 | /* |
| 366 | * Determine whether the sequencer reported a residual | 432 | * Determine whether the sequencer reported a residual |
| 367 | * for this SCB/transaction. | 433 | * for this SCB/transaction. |
| 368 | */ | 434 | */ |
| 369 | void | 435 | static void |
| 370 | ahc_update_residual(struct ahc_softc *ahc, struct scb *scb) | 436 | ahc_update_residual(struct ahc_softc *ahc, struct scb *scb) |
| 371 | { | 437 | { |
| 372 | uint32_t sgptr; | 438 | uint32_t sgptr; |
| @@ -504,7 +570,7 @@ ahc_lookup_scb(struct ahc_softc *ahc, u_int tag) | |||
| 504 | return (scb); | 570 | return (scb); |
| 505 | } | 571 | } |
| 506 | 572 | ||
| 507 | void | 573 | static void |
| 508 | ahc_swap_with_next_hscb(struct ahc_softc *ahc, struct scb *scb) | 574 | ahc_swap_with_next_hscb(struct ahc_softc *ahc, struct scb *scb) |
| 509 | { | 575 | { |
| 510 | struct hardware_scb *q_hscb; | 576 | struct hardware_scb *q_hscb; |
| @@ -593,7 +659,7 @@ ahc_get_sense_buf(struct ahc_softc *ahc, struct scb *scb) | |||
| 593 | return (&ahc->scb_data->sense[offset]); | 659 | return (&ahc->scb_data->sense[offset]); |
| 594 | } | 660 | } |
| 595 | 661 | ||
| 596 | uint32_t | 662 | static uint32_t |
| 597 | ahc_get_sense_bufaddr(struct ahc_softc *ahc, struct scb *scb) | 663 | ahc_get_sense_bufaddr(struct ahc_softc *ahc, struct scb *scb) |
| 598 | { | 664 | { |
| 599 | int offset; | 665 | int offset; |
| @@ -604,14 +670,14 @@ ahc_get_sense_bufaddr(struct ahc_softc *ahc, struct scb *scb) | |||
| 604 | } | 670 | } |
| 605 | 671 | ||
| 606 | /************************** Interrupt Processing ******************************/ | 672 | /************************** Interrupt Processing ******************************/ |
| 607 | void | 673 | static void |
| 608 | ahc_sync_qoutfifo(struct ahc_softc *ahc, int op) | 674 | ahc_sync_qoutfifo(struct ahc_softc *ahc, int op) |
| 609 | { | 675 | { |
| 610 | ahc_dmamap_sync(ahc, ahc->shared_data_dmat, ahc->shared_data_dmamap, | 676 | ahc_dmamap_sync(ahc, ahc->shared_data_dmat, ahc->shared_data_dmamap, |
| 611 | /*offset*/0, /*len*/256, op); | 677 | /*offset*/0, /*len*/256, op); |
| 612 | } | 678 | } |
| 613 | 679 | ||
| 614 | void | 680 | static void |
| 615 | ahc_sync_tqinfifo(struct ahc_softc *ahc, int op) | 681 | ahc_sync_tqinfifo(struct ahc_softc *ahc, int op) |
| 616 | { | 682 | { |
| 617 | #ifdef AHC_TARGET_MODE | 683 | #ifdef AHC_TARGET_MODE |
| @@ -631,7 +697,7 @@ ahc_sync_tqinfifo(struct ahc_softc *ahc, int op) | |||
| 631 | */ | 697 | */ |
| 632 | #define AHC_RUN_QOUTFIFO 0x1 | 698 | #define AHC_RUN_QOUTFIFO 0x1 |
| 633 | #define AHC_RUN_TQINFIFO 0x2 | 699 | #define AHC_RUN_TQINFIFO 0x2 |
| 634 | u_int | 700 | static u_int |
| 635 | ahc_check_cmdcmpltqueues(struct ahc_softc *ahc) | 701 | ahc_check_cmdcmpltqueues(struct ahc_softc *ahc) |
| 636 | { | 702 | { |
| 637 | u_int retval; | 703 | u_int retval; |
| @@ -745,7 +811,7 @@ ahc_intr(struct ahc_softc *ahc) | |||
| 745 | /* | 811 | /* |
| 746 | * Restart the sequencer program from address zero | 812 | * Restart the sequencer program from address zero |
| 747 | */ | 813 | */ |
| 748 | void | 814 | static void |
| 749 | ahc_restart(struct ahc_softc *ahc) | 815 | ahc_restart(struct ahc_softc *ahc) |
| 750 | { | 816 | { |
| 751 | 817 | ||
| @@ -806,7 +872,7 @@ ahc_restart(struct ahc_softc *ahc) | |||
| 806 | } | 872 | } |
| 807 | 873 | ||
| 808 | /************************* Input/Output Queues ********************************/ | 874 | /************************* Input/Output Queues ********************************/ |
| 809 | void | 875 | static void |
| 810 | ahc_run_qoutfifo(struct ahc_softc *ahc) | 876 | ahc_run_qoutfifo(struct ahc_softc *ahc) |
| 811 | { | 877 | { |
| 812 | struct scb *scb; | 878 | struct scb *scb; |
| @@ -853,7 +919,7 @@ ahc_run_qoutfifo(struct ahc_softc *ahc) | |||
| 853 | } | 919 | } |
| 854 | } | 920 | } |
| 855 | 921 | ||
| 856 | void | 922 | static void |
| 857 | ahc_run_untagged_queues(struct ahc_softc *ahc) | 923 | ahc_run_untagged_queues(struct ahc_softc *ahc) |
| 858 | { | 924 | { |
| 859 | int i; | 925 | int i; |
| @@ -862,7 +928,7 @@ ahc_run_untagged_queues(struct ahc_softc *ahc) | |||
| 862 | ahc_run_untagged_queue(ahc, &ahc->untagged_queues[i]); | 928 | ahc_run_untagged_queue(ahc, &ahc->untagged_queues[i]); |
| 863 | } | 929 | } |
| 864 | 930 | ||
| 865 | void | 931 | static void |
| 866 | ahc_run_untagged_queue(struct ahc_softc *ahc, struct scb_tailq *queue) | 932 | ahc_run_untagged_queue(struct ahc_softc *ahc, struct scb_tailq *queue) |
| 867 | { | 933 | { |
| 868 | struct scb *scb; | 934 | struct scb *scb; |
| @@ -878,7 +944,7 @@ ahc_run_untagged_queue(struct ahc_softc *ahc, struct scb_tailq *queue) | |||
| 878 | } | 944 | } |
| 879 | 945 | ||
| 880 | /************************* Interrupt Handling *********************************/ | 946 | /************************* Interrupt Handling *********************************/ |
| 881 | void | 947 | static void |
| 882 | ahc_handle_brkadrint(struct ahc_softc *ahc) | 948 | ahc_handle_brkadrint(struct ahc_softc *ahc) |
| 883 | { | 949 | { |
| 884 | /* | 950 | /* |
| @@ -907,7 +973,7 @@ ahc_handle_brkadrint(struct ahc_softc *ahc) | |||
| 907 | ahc_shutdown(ahc); | 973 | ahc_shutdown(ahc); |
| 908 | } | 974 | } |
| 909 | 975 | ||
| 910 | void | 976 | static void |
| 911 | ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) | 977 | ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) |
| 912 | { | 978 | { |
| 913 | struct scb *scb; | 979 | struct scb *scb; |
| @@ -1458,7 +1524,7 @@ unpause: | |||
| 1458 | ahc_unpause(ahc); | 1524 | ahc_unpause(ahc); |
| 1459 | } | 1525 | } |
| 1460 | 1526 | ||
| 1461 | void | 1527 | static void |
| 1462 | ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat) | 1528 | ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat) |
| 1463 | { | 1529 | { |
| 1464 | u_int scb_index; | 1530 | u_int scb_index; |
| @@ -1911,7 +1977,7 @@ ahc_force_renegotiation(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) | |||
| 1911 | } | 1977 | } |
| 1912 | 1978 | ||
| 1913 | #define AHC_MAX_STEPS 2000 | 1979 | #define AHC_MAX_STEPS 2000 |
| 1914 | void | 1980 | static void |
| 1915 | ahc_clear_critical_section(struct ahc_softc *ahc) | 1981 | ahc_clear_critical_section(struct ahc_softc *ahc) |
| 1916 | { | 1982 | { |
| 1917 | int stepping; | 1983 | int stepping; |
| @@ -2004,7 +2070,7 @@ ahc_clear_critical_section(struct ahc_softc *ahc) | |||
| 2004 | /* | 2070 | /* |
| 2005 | * Clear any pending interrupt status. | 2071 | * Clear any pending interrupt status. |
| 2006 | */ | 2072 | */ |
| 2007 | void | 2073 | static void |
| 2008 | ahc_clear_intstat(struct ahc_softc *ahc) | 2074 | ahc_clear_intstat(struct ahc_softc *ahc) |
| 2009 | { | 2075 | { |
| 2010 | /* Clear any interrupt conditions this may have caused */ | 2076 | /* Clear any interrupt conditions this may have caused */ |
| @@ -2023,7 +2089,8 @@ ahc_clear_intstat(struct ahc_softc *ahc) | |||
| 2023 | uint32_t ahc_debug = AHC_DEBUG_OPTS; | 2089 | uint32_t ahc_debug = AHC_DEBUG_OPTS; |
| 2024 | #endif | 2090 | #endif |
| 2025 | 2091 | ||
| 2026 | void | 2092 | #if 0 /* unused */ |
| 2093 | static void | ||
| 2027 | ahc_print_scb(struct scb *scb) | 2094 | ahc_print_scb(struct scb *scb) |
| 2028 | { | 2095 | { |
| 2029 | int i; | 2096 | int i; |
| @@ -2055,6 +2122,7 @@ ahc_print_scb(struct scb *scb) | |||
| 2055 | } | 2122 | } |
| 2056 | } | 2123 | } |
| 2057 | } | 2124 | } |
| 2125 | #endif | ||
| 2058 | 2126 | ||
| 2059 | /************************* Transfer Negotiation *******************************/ | 2127 | /************************* Transfer Negotiation *******************************/ |
| 2060 | /* | 2128 | /* |
| @@ -2138,7 +2206,7 @@ ahc_free_tstate(struct ahc_softc *ahc, u_int scsi_id, char channel, int force) | |||
| 2138 | * by the capabilities of the bus connectivity of and sync settings for | 2206 | * by the capabilities of the bus connectivity of and sync settings for |
| 2139 | * the target. | 2207 | * the target. |
| 2140 | */ | 2208 | */ |
| 2141 | struct ahc_syncrate * | 2209 | const struct ahc_syncrate * |
| 2142 | ahc_devlimited_syncrate(struct ahc_softc *ahc, | 2210 | ahc_devlimited_syncrate(struct ahc_softc *ahc, |
| 2143 | struct ahc_initiator_tinfo *tinfo, | 2211 | struct ahc_initiator_tinfo *tinfo, |
| 2144 | u_int *period, u_int *ppr_options, role_t role) | 2212 | u_int *period, u_int *ppr_options, role_t role) |
| @@ -2193,11 +2261,11 @@ ahc_devlimited_syncrate(struct ahc_softc *ahc, | |||
| 2193 | * Return the period and offset that should be sent to the target | 2261 | * Return the period and offset that should be sent to the target |
| 2194 | * if this was the beginning of an SDTR. | 2262 | * if this was the beginning of an SDTR. |
| 2195 | */ | 2263 | */ |
| 2196 | struct ahc_syncrate * | 2264 | const struct ahc_syncrate * |
| 2197 | ahc_find_syncrate(struct ahc_softc *ahc, u_int *period, | 2265 | ahc_find_syncrate(struct ahc_softc *ahc, u_int *period, |
| 2198 | u_int *ppr_options, u_int maxsync) | 2266 | u_int *ppr_options, u_int maxsync) |
| 2199 | { | 2267 | { |
| 2200 | struct ahc_syncrate *syncrate; | 2268 | const struct ahc_syncrate *syncrate; |
| 2201 | 2269 | ||
| 2202 | if ((ahc->features & AHC_DT) == 0) | 2270 | if ((ahc->features & AHC_DT) == 0) |
| 2203 | *ppr_options &= ~MSG_EXT_PPR_DT_REQ; | 2271 | *ppr_options &= ~MSG_EXT_PPR_DT_REQ; |
| @@ -2272,7 +2340,7 @@ ahc_find_syncrate(struct ahc_softc *ahc, u_int *period, | |||
| 2272 | u_int | 2340 | u_int |
| 2273 | ahc_find_period(struct ahc_softc *ahc, u_int scsirate, u_int maxsync) | 2341 | ahc_find_period(struct ahc_softc *ahc, u_int scsirate, u_int maxsync) |
| 2274 | { | 2342 | { |
| 2275 | struct ahc_syncrate *syncrate; | 2343 | const struct ahc_syncrate *syncrate; |
| 2276 | 2344 | ||
| 2277 | if ((ahc->features & AHC_ULTRA2) != 0) | 2345 | if ((ahc->features & AHC_ULTRA2) != 0) |
| 2278 | scsirate &= SXFR_ULTRA2; | 2346 | scsirate &= SXFR_ULTRA2; |
| @@ -2310,10 +2378,10 @@ ahc_find_period(struct ahc_softc *ahc, u_int scsirate, u_int maxsync) | |||
| 2310 | * Truncate the given synchronous offset to a value the | 2378 | * Truncate the given synchronous offset to a value the |
| 2311 | * current adapter type and syncrate are capable of. | 2379 | * current adapter type and syncrate are capable of. |
| 2312 | */ | 2380 | */ |
| 2313 | void | 2381 | static void |
| 2314 | ahc_validate_offset(struct ahc_softc *ahc, | 2382 | ahc_validate_offset(struct ahc_softc *ahc, |
| 2315 | struct ahc_initiator_tinfo *tinfo, | 2383 | struct ahc_initiator_tinfo *tinfo, |
| 2316 | struct ahc_syncrate *syncrate, | 2384 | const struct ahc_syncrate *syncrate, |
| 2317 | u_int *offset, int wide, role_t role) | 2385 | u_int *offset, int wide, role_t role) |
| 2318 | { | 2386 | { |
| 2319 | u_int maxoffset; | 2387 | u_int maxoffset; |
| @@ -2342,7 +2410,7 @@ ahc_validate_offset(struct ahc_softc *ahc, | |||
| 2342 | * Truncate the given transfer width parameter to a value the | 2410 | * Truncate the given transfer width parameter to a value the |
| 2343 | * current adapter type is capable of. | 2411 | * current adapter type is capable of. |
| 2344 | */ | 2412 | */ |
| 2345 | void | 2413 | static void |
| 2346 | ahc_validate_width(struct ahc_softc *ahc, struct ahc_initiator_tinfo *tinfo, | 2414 | ahc_validate_width(struct ahc_softc *ahc, struct ahc_initiator_tinfo *tinfo, |
| 2347 | u_int *bus_width, role_t role) | 2415 | u_int *bus_width, role_t role) |
| 2348 | { | 2416 | { |
| @@ -2417,7 +2485,7 @@ ahc_update_neg_request(struct ahc_softc *ahc, struct ahc_devinfo *devinfo, | |||
| 2417 | */ | 2485 | */ |
| 2418 | void | 2486 | void |
| 2419 | ahc_set_syncrate(struct ahc_softc *ahc, struct ahc_devinfo *devinfo, | 2487 | ahc_set_syncrate(struct ahc_softc *ahc, struct ahc_devinfo *devinfo, |
| 2420 | struct ahc_syncrate *syncrate, u_int period, | 2488 | const struct ahc_syncrate *syncrate, u_int period, |
| 2421 | u_int offset, u_int ppr_options, u_int type, int paused) | 2489 | u_int offset, u_int ppr_options, u_int type, int paused) |
| 2422 | { | 2490 | { |
| 2423 | struct ahc_initiator_tinfo *tinfo; | 2491 | struct ahc_initiator_tinfo *tinfo; |
| @@ -2724,11 +2792,11 @@ ahc_fetch_devinfo(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) | |||
| 2724 | role); | 2792 | role); |
| 2725 | } | 2793 | } |
| 2726 | 2794 | ||
| 2727 | struct ahc_phase_table_entry* | 2795 | static const struct ahc_phase_table_entry* |
| 2728 | ahc_lookup_phase_entry(int phase) | 2796 | ahc_lookup_phase_entry(int phase) |
| 2729 | { | 2797 | { |
| 2730 | struct ahc_phase_table_entry *entry; | 2798 | const struct ahc_phase_table_entry *entry; |
| 2731 | struct ahc_phase_table_entry *last_entry; | 2799 | const struct ahc_phase_table_entry *last_entry; |
| 2732 | 2800 | ||
| 2733 | /* | 2801 | /* |
| 2734 | * num_phases doesn't include the default entry which | 2802 | * num_phases doesn't include the default entry which |
| @@ -2894,7 +2962,7 @@ ahc_build_transfer_msg(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) | |||
| 2894 | */ | 2962 | */ |
| 2895 | struct ahc_initiator_tinfo *tinfo; | 2963 | struct ahc_initiator_tinfo *tinfo; |
| 2896 | struct ahc_tmode_tstate *tstate; | 2964 | struct ahc_tmode_tstate *tstate; |
| 2897 | struct ahc_syncrate *rate; | 2965 | const struct ahc_syncrate *rate; |
| 2898 | int dowide; | 2966 | int dowide; |
| 2899 | int dosync; | 2967 | int dosync; |
| 2900 | int doppr; | 2968 | int doppr; |
| @@ -3560,7 +3628,7 @@ ahc_parse_msg(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) | |||
| 3560 | switch (ahc->msgin_buf[2]) { | 3628 | switch (ahc->msgin_buf[2]) { |
| 3561 | case MSG_EXT_SDTR: | 3629 | case MSG_EXT_SDTR: |
| 3562 | { | 3630 | { |
| 3563 | struct ahc_syncrate *syncrate; | 3631 | const struct ahc_syncrate *syncrate; |
| 3564 | u_int period; | 3632 | u_int period; |
| 3565 | u_int ppr_options; | 3633 | u_int ppr_options; |
| 3566 | u_int offset; | 3634 | u_int offset; |
| @@ -3735,7 +3803,7 @@ ahc_parse_msg(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) | |||
| 3735 | } | 3803 | } |
| 3736 | case MSG_EXT_PPR: | 3804 | case MSG_EXT_PPR: |
| 3737 | { | 3805 | { |
| 3738 | struct ahc_syncrate *syncrate; | 3806 | const struct ahc_syncrate *syncrate; |
| 3739 | u_int period; | 3807 | u_int period; |
| 3740 | u_int offset; | 3808 | u_int offset; |
| 3741 | u_int bus_width; | 3809 | u_int bus_width; |
| @@ -4488,7 +4556,7 @@ ahc_free(struct ahc_softc *ahc) | |||
| 4488 | return; | 4556 | return; |
| 4489 | } | 4557 | } |
| 4490 | 4558 | ||
| 4491 | void | 4559 | static void |
| 4492 | ahc_shutdown(void *arg) | 4560 | ahc_shutdown(void *arg) |
| 4493 | { | 4561 | { |
| 4494 | struct ahc_softc *ahc; | 4562 | struct ahc_softc *ahc; |
| @@ -4892,7 +4960,7 @@ ahc_fini_scbdata(struct ahc_softc *ahc) | |||
| 4892 | free(scb_data->scbarray, M_DEVBUF); | 4960 | free(scb_data->scbarray, M_DEVBUF); |
| 4893 | } | 4961 | } |
| 4894 | 4962 | ||
| 4895 | void | 4963 | static void |
| 4896 | ahc_alloc_scbs(struct ahc_softc *ahc) | 4964 | ahc_alloc_scbs(struct ahc_softc *ahc) |
| 4897 | { | 4965 | { |
| 4898 | struct scb_data *scb_data; | 4966 | struct scb_data *scb_data; |
| @@ -5625,7 +5693,7 @@ ahc_resume(struct ahc_softc *ahc) | |||
| 5625 | * Return the untagged transaction id for a given target/channel lun. | 5693 | * Return the untagged transaction id for a given target/channel lun. |
| 5626 | * Optionally, clear the entry. | 5694 | * Optionally, clear the entry. |
| 5627 | */ | 5695 | */ |
| 5628 | u_int | 5696 | static u_int |
| 5629 | ahc_index_busy_tcl(struct ahc_softc *ahc, u_int tcl) | 5697 | ahc_index_busy_tcl(struct ahc_softc *ahc, u_int tcl) |
| 5630 | { | 5698 | { |
| 5631 | u_int scbid; | 5699 | u_int scbid; |
| @@ -5646,7 +5714,7 @@ ahc_index_busy_tcl(struct ahc_softc *ahc, u_int tcl) | |||
| 5646 | return (scbid); | 5714 | return (scbid); |
| 5647 | } | 5715 | } |
| 5648 | 5716 | ||
| 5649 | void | 5717 | static void |
| 5650 | ahc_unbusy_tcl(struct ahc_softc *ahc, u_int tcl) | 5718 | ahc_unbusy_tcl(struct ahc_softc *ahc, u_int tcl) |
| 5651 | { | 5719 | { |
| 5652 | u_int target_offset; | 5720 | u_int target_offset; |
| @@ -5664,7 +5732,7 @@ ahc_unbusy_tcl(struct ahc_softc *ahc, u_int tcl) | |||
| 5664 | } | 5732 | } |
| 5665 | } | 5733 | } |
| 5666 | 5734 | ||
| 5667 | void | 5735 | static void |
| 5668 | ahc_busy_tcl(struct ahc_softc *ahc, u_int tcl, u_int scbid) | 5736 | ahc_busy_tcl(struct ahc_softc *ahc, u_int tcl, u_int scbid) |
| 5669 | { | 5737 | { |
| 5670 | u_int target_offset; | 5738 | u_int target_offset; |
| @@ -5719,7 +5787,7 @@ ahc_match_scb(struct ahc_softc *ahc, struct scb *scb, int target, | |||
| 5719 | return match; | 5787 | return match; |
| 5720 | } | 5788 | } |
| 5721 | 5789 | ||
| 5722 | void | 5790 | static void |
| 5723 | ahc_freeze_devq(struct ahc_softc *ahc, struct scb *scb) | 5791 | ahc_freeze_devq(struct ahc_softc *ahc, struct scb *scb) |
| 5724 | { | 5792 | { |
| 5725 | int target; | 5793 | int target; |
| @@ -6260,7 +6328,7 @@ ahc_rem_wscb(struct ahc_softc *ahc, u_int scbpos, u_int prev) | |||
| 6260 | * been modified from CAM_REQ_INPROG. This routine assumes that the sequencer | 6328 | * been modified from CAM_REQ_INPROG. This routine assumes that the sequencer |
| 6261 | * is paused before it is called. | 6329 | * is paused before it is called. |
| 6262 | */ | 6330 | */ |
| 6263 | int | 6331 | static int |
| 6264 | ahc_abort_scbs(struct ahc_softc *ahc, int target, char channel, | 6332 | ahc_abort_scbs(struct ahc_softc *ahc, int target, char channel, |
| 6265 | int lun, u_int tag, role_t role, uint32_t status) | 6333 | int lun, u_int tag, role_t role, uint32_t status) |
| 6266 | { | 6334 | { |
| @@ -6582,7 +6650,7 @@ ahc_reset_channel(struct ahc_softc *ahc, char channel, int initiate_reset) | |||
| 6582 | /* | 6650 | /* |
| 6583 | * Calculate the residual for a just completed SCB. | 6651 | * Calculate the residual for a just completed SCB. |
| 6584 | */ | 6652 | */ |
| 6585 | void | 6653 | static void |
| 6586 | ahc_calc_residual(struct ahc_softc *ahc, struct scb *scb) | 6654 | ahc_calc_residual(struct ahc_softc *ahc, struct scb *scb) |
| 6587 | { | 6655 | { |
| 6588 | struct hardware_scb *hscb; | 6656 | struct hardware_scb *hscb; |
| @@ -7049,7 +7117,7 @@ ahc_download_instr(struct ahc_softc *ahc, u_int instrptr, uint8_t *dconsts) | |||
| 7049 | } | 7117 | } |
| 7050 | 7118 | ||
| 7051 | int | 7119 | int |
| 7052 | ahc_print_register(ahc_reg_parse_entry_t *table, u_int num_entries, | 7120 | ahc_print_register(const ahc_reg_parse_entry_t *table, u_int num_entries, |
| 7053 | const char *name, u_int address, u_int value, | 7121 | const char *name, u_int address, u_int value, |
| 7054 | u_int *cur_column, u_int wrap_point) | 7122 | u_int *cur_column, u_int wrap_point) |
| 7055 | { | 7123 | { |
| @@ -7733,7 +7801,7 @@ ahc_update_scsiid(struct ahc_softc *ahc, u_int targid_mask) | |||
| 7733 | ahc_outb(ahc, SCSIID, scsiid); | 7801 | ahc_outb(ahc, SCSIID, scsiid); |
| 7734 | } | 7802 | } |
| 7735 | 7803 | ||
| 7736 | void | 7804 | static void |
| 7737 | ahc_run_tqinfifo(struct ahc_softc *ahc, int paused) | 7805 | ahc_run_tqinfifo(struct ahc_softc *ahc, int paused) |
| 7738 | { | 7806 | { |
| 7739 | struct target_cmd *cmd; | 7807 | struct target_cmd *cmd; |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_inline.h b/drivers/scsi/aic7xxx/aic7xxx_inline.h index d18cd743618d..09bf2f4d78d5 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_inline.h +++ b/drivers/scsi/aic7xxx/aic7xxx_inline.h | |||
| @@ -46,58 +46,13 @@ | |||
| 46 | #define _AIC7XXX_INLINE_H_ | 46 | #define _AIC7XXX_INLINE_H_ |
| 47 | 47 | ||
| 48 | /************************* Sequencer Execution Control ************************/ | 48 | /************************* Sequencer Execution Control ************************/ |
| 49 | void ahc_pause_bug_fix(struct ahc_softc *ahc); | ||
| 50 | int ahc_is_paused(struct ahc_softc *ahc); | 49 | int ahc_is_paused(struct ahc_softc *ahc); |
| 51 | void ahc_pause(struct ahc_softc *ahc); | 50 | void ahc_pause(struct ahc_softc *ahc); |
| 52 | void ahc_unpause(struct ahc_softc *ahc); | 51 | void ahc_unpause(struct ahc_softc *ahc); |
| 53 | 52 | ||
| 54 | /*********************** Untagged Transaction Routines ************************/ | ||
| 55 | static __inline void ahc_freeze_untagged_queues(struct ahc_softc *ahc); | ||
| 56 | static __inline void ahc_release_untagged_queues(struct ahc_softc *ahc); | ||
| 57 | |||
| 58 | /* | ||
| 59 | * Block our completion routine from starting the next untagged | ||
| 60 | * transaction for this target or target lun. | ||
| 61 | */ | ||
| 62 | static __inline void | ||
| 63 | ahc_freeze_untagged_queues(struct ahc_softc *ahc) | ||
| 64 | { | ||
| 65 | if ((ahc->flags & AHC_SCB_BTT) == 0) | ||
| 66 | ahc->untagged_queue_lock++; | ||
| 67 | } | ||
| 68 | |||
| 69 | /* | ||
| 70 | * Allow the next untagged transaction for this target or target lun | ||
| 71 | * to be executed. We use a counting semaphore to allow the lock | ||
| 72 | * to be acquired recursively. Once the count drops to zero, the | ||
| 73 | * transaction queues will be run. | ||
| 74 | */ | ||
| 75 | static __inline void | ||
| 76 | ahc_release_untagged_queues(struct ahc_softc *ahc) | ||
| 77 | { | ||
| 78 | if ((ahc->flags & AHC_SCB_BTT) == 0) { | ||
| 79 | ahc->untagged_queue_lock--; | ||
| 80 | if (ahc->untagged_queue_lock == 0) | ||
| 81 | ahc_run_untagged_queues(ahc); | ||
| 82 | } | ||
| 83 | } | ||
| 84 | |||
| 85 | /************************** Memory mapping routines ***************************/ | 53 | /************************** Memory mapping routines ***************************/ |
| 86 | struct ahc_dma_seg * | ||
| 87 | ahc_sg_bus_to_virt(struct scb *scb, | ||
| 88 | uint32_t sg_busaddr); | ||
| 89 | uint32_t | ||
| 90 | ahc_sg_virt_to_bus(struct scb *scb, | ||
| 91 | struct ahc_dma_seg *sg); | ||
| 92 | uint32_t | ||
| 93 | ahc_hscb_busaddr(struct ahc_softc *ahc, u_int index); | ||
| 94 | void ahc_sync_scb(struct ahc_softc *ahc, | ||
| 95 | struct scb *scb, int op); | ||
| 96 | void ahc_sync_sglist(struct ahc_softc *ahc, | 54 | void ahc_sync_sglist(struct ahc_softc *ahc, |
| 97 | struct scb *scb, int op); | 55 | struct scb *scb, int op); |
| 98 | uint32_t | ||
| 99 | ahc_targetcmd_offset(struct ahc_softc *ahc, | ||
| 100 | u_int index); | ||
| 101 | 56 | ||
| 102 | /******************************** Debugging ***********************************/ | 57 | /******************************** Debugging ***********************************/ |
| 103 | static __inline char *ahc_name(struct ahc_softc *ahc); | 58 | static __inline char *ahc_name(struct ahc_softc *ahc); |
| @@ -110,8 +65,6 @@ ahc_name(struct ahc_softc *ahc) | |||
| 110 | 65 | ||
| 111 | /*********************** Miscellaneous Support Functions ***********************/ | 66 | /*********************** Miscellaneous Support Functions ***********************/ |
| 112 | 67 | ||
| 113 | void ahc_update_residual(struct ahc_softc *ahc, | ||
| 114 | struct scb *scb); | ||
| 115 | struct ahc_initiator_tinfo * | 68 | struct ahc_initiator_tinfo * |
| 116 | ahc_fetch_transinfo(struct ahc_softc *ahc, | 69 | ahc_fetch_transinfo(struct ahc_softc *ahc, |
| 117 | char channel, u_int our_id, | 70 | char channel, u_int our_id, |
| @@ -134,20 +87,12 @@ struct scb* | |||
| 134 | void ahc_free_scb(struct ahc_softc *ahc, struct scb *scb); | 87 | void ahc_free_scb(struct ahc_softc *ahc, struct scb *scb); |
| 135 | struct scb * | 88 | struct scb * |
| 136 | ahc_lookup_scb(struct ahc_softc *ahc, u_int tag); | 89 | ahc_lookup_scb(struct ahc_softc *ahc, u_int tag); |
| 137 | void ahc_swap_with_next_hscb(struct ahc_softc *ahc, | ||
| 138 | struct scb *scb); | ||
| 139 | void ahc_queue_scb(struct ahc_softc *ahc, struct scb *scb); | 90 | void ahc_queue_scb(struct ahc_softc *ahc, struct scb *scb); |
| 140 | struct scsi_sense_data * | 91 | struct scsi_sense_data * |
| 141 | ahc_get_sense_buf(struct ahc_softc *ahc, | 92 | ahc_get_sense_buf(struct ahc_softc *ahc, |
| 142 | struct scb *scb); | 93 | struct scb *scb); |
| 143 | uint32_t | ||
| 144 | ahc_get_sense_bufaddr(struct ahc_softc *ahc, | ||
| 145 | struct scb *scb); | ||
| 146 | 94 | ||
| 147 | /************************** Interrupt Processing ******************************/ | 95 | /************************** Interrupt Processing ******************************/ |
| 148 | void ahc_sync_qoutfifo(struct ahc_softc *ahc, int op); | ||
| 149 | void ahc_sync_tqinfifo(struct ahc_softc *ahc, int op); | ||
| 150 | u_int ahc_check_cmdcmpltqueues(struct ahc_softc *ahc); | ||
| 151 | int ahc_intr(struct ahc_softc *ahc); | 96 | int ahc_intr(struct ahc_softc *ahc); |
| 152 | 97 | ||
| 153 | #endif /* _AIC7XXX_INLINE_H_ */ | 98 | #endif /* _AIC7XXX_INLINE_H_ */ |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c index c5a354b39d88..01118c3f56b5 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.c +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c | |||
| @@ -2386,7 +2386,7 @@ static void ahc_linux_set_period(struct scsi_target *starget, int period) | |||
| 2386 | unsigned int ppr_options = tinfo->goal.ppr_options; | 2386 | unsigned int ppr_options = tinfo->goal.ppr_options; |
| 2387 | unsigned long flags; | 2387 | unsigned long flags; |
| 2388 | unsigned long offset = tinfo->goal.offset; | 2388 | unsigned long offset = tinfo->goal.offset; |
| 2389 | struct ahc_syncrate *syncrate; | 2389 | const struct ahc_syncrate *syncrate; |
| 2390 | 2390 | ||
| 2391 | if (offset == 0) | 2391 | if (offset == 0) |
| 2392 | offset = MAX_OFFSET; | 2392 | offset = MAX_OFFSET; |
| @@ -2430,7 +2430,7 @@ static void ahc_linux_set_offset(struct scsi_target *starget, int offset) | |||
| 2430 | unsigned int ppr_options = 0; | 2430 | unsigned int ppr_options = 0; |
| 2431 | unsigned int period = 0; | 2431 | unsigned int period = 0; |
| 2432 | unsigned long flags; | 2432 | unsigned long flags; |
| 2433 | struct ahc_syncrate *syncrate = NULL; | 2433 | const struct ahc_syncrate *syncrate = NULL; |
| 2434 | 2434 | ||
| 2435 | ahc_compile_devinfo(&devinfo, shost->this_id, starget->id, 0, | 2435 | ahc_compile_devinfo(&devinfo, shost->this_id, starget->id, 0, |
| 2436 | starget->channel + 'A', ROLE_INITIATOR); | 2436 | starget->channel + 'A', ROLE_INITIATOR); |
| @@ -2460,7 +2460,7 @@ static void ahc_linux_set_dt(struct scsi_target *starget, int dt) | |||
| 2460 | unsigned int period = tinfo->goal.period; | 2460 | unsigned int period = tinfo->goal.period; |
| 2461 | unsigned int width = tinfo->goal.width; | 2461 | unsigned int width = tinfo->goal.width; |
| 2462 | unsigned long flags; | 2462 | unsigned long flags; |
| 2463 | struct ahc_syncrate *syncrate; | 2463 | const struct ahc_syncrate *syncrate; |
| 2464 | 2464 | ||
| 2465 | if (dt && spi_max_width(starget)) { | 2465 | if (dt && spi_max_width(starget)) { |
| 2466 | ppr_options |= MSG_EXT_PPR_DT_REQ; | 2466 | ppr_options |= MSG_EXT_PPR_DT_REQ; |
diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.h b/drivers/scsi/aic7xxx/aic7xxx_osm.h index c2a9ad76d35d..3f7238db35e5 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_osm.h +++ b/drivers/scsi/aic7xxx/aic7xxx_osm.h | |||
| @@ -398,9 +398,6 @@ struct info_str { | |||
| 398 | int pos; | 398 | int pos; |
| 399 | }; | 399 | }; |
| 400 | 400 | ||
| 401 | void ahc_format_transinfo(struct info_str *info, | ||
| 402 | struct ahc_transinfo *tinfo); | ||
| 403 | |||
| 404 | /******************************** Locking *************************************/ | 401 | /******************************** Locking *************************************/ |
| 405 | /* Lock protecting internal data structures */ | 402 | /* Lock protecting internal data structures */ |
| 406 | 403 | ||
diff --git a/drivers/scsi/aic7xxx/aic7xxx_proc.c b/drivers/scsi/aic7xxx/aic7xxx_proc.c index 99e5443e7535..3afa34c7c591 100644 --- a/drivers/scsi/aic7xxx/aic7xxx_proc.c +++ b/drivers/scsi/aic7xxx/aic7xxx_proc.c | |||
| @@ -137,7 +137,7 @@ copy_info(struct info_str *info, char *fmt, ...) | |||
| 137 | return (len); | 137 | return (len); |
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | void | 140 | static void |
| 141 | ahc_format_transinfo(struct info_str *info, struct ahc_transinfo *tinfo) | 141 | ahc_format_transinfo(struct info_str *info, struct ahc_transinfo *tinfo) |
| 142 | { | 142 | { |
| 143 | u_int speed; | 143 | u_int speed; |
