diff options
Diffstat (limited to 'drivers/scsi/advansys.c')
-rw-r--r-- | drivers/scsi/advansys.c | 628 |
1 files changed, 262 insertions, 366 deletions
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index 72ed9721c44b..6bd8e835ea0f 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c | |||
@@ -75,7 +75,7 @@ | |||
75 | #define ADVANSYS_STATS | 75 | #define ADVANSYS_STATS |
76 | 76 | ||
77 | /* Enable driver tracing. */ | 77 | /* Enable driver tracing. */ |
78 | /* #define ADVANSYS_DEBUG */ | 78 | #undef ADVANSYS_DEBUG |
79 | 79 | ||
80 | /* | 80 | /* |
81 | * Portable Data Types | 81 | * Portable Data Types |
@@ -2277,13 +2277,8 @@ do { \ | |||
2277 | 2277 | ||
2278 | #ifndef ADVANSYS_DEBUG | 2278 | #ifndef ADVANSYS_DEBUG |
2279 | 2279 | ||
2280 | #define ASC_DBG(lvl, s) | 2280 | #define ASC_DBG(lvl, s...) |
2281 | #define ASC_DBG1(lvl, s, a1) | ||
2282 | #define ASC_DBG2(lvl, s, a1, a2) | ||
2283 | #define ASC_DBG3(lvl, s, a1, a2, a3) | ||
2284 | #define ASC_DBG4(lvl, s, a1, a2, a3, a4) | ||
2285 | #define ASC_DBG_PRT_SCSI_HOST(lvl, s) | 2281 | #define ASC_DBG_PRT_SCSI_HOST(lvl, s) |
2286 | #define ASC_DBG_PRT_SCSI_CMND(lvl, s) | ||
2287 | #define ASC_DBG_PRT_ASC_SCSI_Q(lvl, scsiqp) | 2282 | #define ASC_DBG_PRT_ASC_SCSI_Q(lvl, scsiqp) |
2288 | #define ASC_DBG_PRT_ADV_SCSI_REQ_Q(lvl, scsiqp) | 2283 | #define ASC_DBG_PRT_ADV_SCSI_REQ_Q(lvl, scsiqp) |
2289 | #define ASC_DBG_PRT_ASC_QDONE_INFO(lvl, qdone) | 2284 | #define ASC_DBG_PRT_ASC_QDONE_INFO(lvl, qdone) |
@@ -2302,40 +2297,11 @@ do { \ | |||
2302 | * 2-N: Verbose Tracing | 2297 | * 2-N: Verbose Tracing |
2303 | */ | 2298 | */ |
2304 | 2299 | ||
2305 | #define ASC_DBG(lvl, s) \ | 2300 | #define ASC_DBG(lvl, format, arg...) { \ |
2306 | { \ | 2301 | if (asc_dbglvl >= (lvl)) \ |
2307 | if (asc_dbglvl >= (lvl)) { \ | 2302 | printk(KERN_DEBUG "%s: %s: " format, DRV_NAME, \ |
2308 | printk(s); \ | 2303 | __FUNCTION__ , ## arg); \ |
2309 | } \ | 2304 | } |
2310 | } | ||
2311 | |||
2312 | #define ASC_DBG1(lvl, s, a1) \ | ||
2313 | { \ | ||
2314 | if (asc_dbglvl >= (lvl)) { \ | ||
2315 | printk((s), (a1)); \ | ||
2316 | } \ | ||
2317 | } | ||
2318 | |||
2319 | #define ASC_DBG2(lvl, s, a1, a2) \ | ||
2320 | { \ | ||
2321 | if (asc_dbglvl >= (lvl)) { \ | ||
2322 | printk((s), (a1), (a2)); \ | ||
2323 | } \ | ||
2324 | } | ||
2325 | |||
2326 | #define ASC_DBG3(lvl, s, a1, a2, a3) \ | ||
2327 | { \ | ||
2328 | if (asc_dbglvl >= (lvl)) { \ | ||
2329 | printk((s), (a1), (a2), (a3)); \ | ||
2330 | } \ | ||
2331 | } | ||
2332 | |||
2333 | #define ASC_DBG4(lvl, s, a1, a2, a3, a4) \ | ||
2334 | { \ | ||
2335 | if (asc_dbglvl >= (lvl)) { \ | ||
2336 | printk((s), (a1), (a2), (a3), (a4)); \ | ||
2337 | } \ | ||
2338 | } | ||
2339 | 2305 | ||
2340 | #define ASC_DBG_PRT_SCSI_HOST(lvl, s) \ | 2306 | #define ASC_DBG_PRT_SCSI_HOST(lvl, s) \ |
2341 | { \ | 2307 | { \ |
@@ -2344,13 +2310,6 @@ do { \ | |||
2344 | } \ | 2310 | } \ |
2345 | } | 2311 | } |
2346 | 2312 | ||
2347 | #define ASC_DBG_PRT_SCSI_CMND(lvl, s) \ | ||
2348 | { \ | ||
2349 | if (asc_dbglvl >= (lvl)) { \ | ||
2350 | asc_prt_scsi_cmnd(s); \ | ||
2351 | } \ | ||
2352 | } | ||
2353 | |||
2354 | #define ASC_DBG_PRT_ASC_SCSI_Q(lvl, scsiqp) \ | 2313 | #define ASC_DBG_PRT_ASC_SCSI_Q(lvl, scsiqp) \ |
2355 | { \ | 2314 | { \ |
2356 | if (asc_dbglvl >= (lvl)) { \ | 2315 | if (asc_dbglvl >= (lvl)) { \ |
@@ -2519,64 +2478,6 @@ static uchar overrun_buf[ASC_OVERRUN_BSIZE] = { 0 }; | |||
2519 | static int asc_dbglvl = 3; | 2478 | static int asc_dbglvl = 3; |
2520 | 2479 | ||
2521 | /* | 2480 | /* |
2522 | * asc_prt_scsi_host() | ||
2523 | */ | ||
2524 | static void asc_prt_scsi_host(struct Scsi_Host *s) | ||
2525 | { | ||
2526 | struct asc_board *boardp = shost_priv(s); | ||
2527 | |||
2528 | printk("Scsi_Host at addr 0x%lx\n", (ulong)s); | ||
2529 | printk(" host_busy %u, host_no %d, last_reset %d,\n", | ||
2530 | s->host_busy, s->host_no, (unsigned)s->last_reset); | ||
2531 | |||
2532 | printk(" base 0x%lx, io_port 0x%lx, irq 0x%x,\n", | ||
2533 | (ulong)s->base, (ulong)s->io_port, boardp->irq); | ||
2534 | |||
2535 | printk(" dma_channel %d, this_id %d, can_queue %d,\n", | ||
2536 | s->dma_channel, s->this_id, s->can_queue); | ||
2537 | |||
2538 | printk(" cmd_per_lun %d, sg_tablesize %d, unchecked_isa_dma %d\n", | ||
2539 | s->cmd_per_lun, s->sg_tablesize, s->unchecked_isa_dma); | ||
2540 | |||
2541 | if (ASC_NARROW_BOARD(boardp)) { | ||
2542 | asc_prt_asc_dvc_var(boardp->dvc_var.asc_dvc_var); | ||
2543 | asc_prt_asc_dvc_cfg(boardp->dvc_cfg.asc_dvc_cfg); | ||
2544 | } else { | ||
2545 | asc_prt_adv_dvc_var(boardp->dvc_var.adv_dvc_var); | ||
2546 | asc_prt_adv_dvc_cfg(boardp->dvc_cfg.adv_dvc_cfg); | ||
2547 | } | ||
2548 | } | ||
2549 | |||
2550 | /* | ||
2551 | * asc_prt_scsi_cmnd() | ||
2552 | */ | ||
2553 | static void asc_prt_scsi_cmnd(struct scsi_cmnd *s) | ||
2554 | { | ||
2555 | printk("struct scsi_cmnd at addr 0x%lx\n", (ulong)s); | ||
2556 | |||
2557 | printk(" host 0x%lx, device 0x%lx, target %u, lun %u, channel %u,\n", | ||
2558 | (ulong)s->device->host, (ulong)s->device, s->device->id, | ||
2559 | s->device->lun, s->device->channel); | ||
2560 | |||
2561 | asc_prt_hex(" CDB", s->cmnd, s->cmd_len); | ||
2562 | |||
2563 | printk("sc_data_direction %u, resid %d\n", | ||
2564 | s->sc_data_direction, s->resid); | ||
2565 | |||
2566 | printk(" use_sg %u, sglist_len %u\n", s->use_sg, s->sglist_len); | ||
2567 | |||
2568 | printk(" serial_number 0x%x, retries %d, allowed %d\n", | ||
2569 | (unsigned)s->serial_number, s->retries, s->allowed); | ||
2570 | |||
2571 | printk(" timeout_per_command %d\n", s->timeout_per_command); | ||
2572 | |||
2573 | printk(" scsi_done 0x%p, done 0x%p, host_scribble 0x%p, result 0x%x\n", | ||
2574 | s->scsi_done, s->done, s->host_scribble, s->result); | ||
2575 | |||
2576 | printk(" tag %u, pid %u\n", (unsigned)s->tag, (unsigned)s->pid); | ||
2577 | } | ||
2578 | |||
2579 | /* | ||
2580 | * asc_prt_asc_dvc_var() | 2481 | * asc_prt_asc_dvc_var() |
2581 | */ | 2482 | */ |
2582 | static void asc_prt_asc_dvc_var(ASC_DVC_VAR *h) | 2483 | static void asc_prt_asc_dvc_var(ASC_DVC_VAR *h) |
@@ -2627,65 +2528,11 @@ static void asc_prt_asc_dvc_cfg(ASC_DVC_CFG *h) | |||
2627 | "chip_version %d,\n", h->chip_scsi_id, h->isa_dma_speed, | 2528 | "chip_version %d,\n", h->chip_scsi_id, h->isa_dma_speed, |
2628 | h->isa_dma_channel, h->chip_version); | 2529 | h->isa_dma_channel, h->chip_version); |
2629 | 2530 | ||
2630 | printk(" pci_device_id %d, mcode_date 0x%x, mcode_version %d, " | 2531 | printk(" mcode_date 0x%x, mcode_version %d, overrun_buf 0x%p\n", |
2631 | "overrun_buf 0x%p\n", to_pci_dev(h->dev)->device, | ||
2632 | h->mcode_date, h->mcode_version, h->overrun_buf); | 2532 | h->mcode_date, h->mcode_version, h->overrun_buf); |
2633 | } | 2533 | } |
2634 | 2534 | ||
2635 | /* | 2535 | /* |
2636 | * asc_prt_asc_scsi_q() | ||
2637 | */ | ||
2638 | static void asc_prt_asc_scsi_q(ASC_SCSI_Q *q) | ||
2639 | { | ||
2640 | ASC_SG_HEAD *sgp; | ||
2641 | int i; | ||
2642 | |||
2643 | printk("ASC_SCSI_Q at addr 0x%lx\n", (ulong)q); | ||
2644 | |||
2645 | printk | ||
2646 | (" target_ix 0x%x, target_lun %u, srb_ptr 0x%lx, tag_code 0x%x,\n", | ||
2647 | q->q2.target_ix, q->q1.target_lun, (ulong)q->q2.srb_ptr, | ||
2648 | q->q2.tag_code); | ||
2649 | |||
2650 | printk | ||
2651 | (" data_addr 0x%lx, data_cnt %lu, sense_addr 0x%lx, sense_len %u,\n", | ||
2652 | (ulong)le32_to_cpu(q->q1.data_addr), | ||
2653 | (ulong)le32_to_cpu(q->q1.data_cnt), | ||
2654 | (ulong)le32_to_cpu(q->q1.sense_addr), q->q1.sense_len); | ||
2655 | |||
2656 | printk(" cdbptr 0x%lx, cdb_len %u, sg_head 0x%lx, sg_queue_cnt %u\n", | ||
2657 | (ulong)q->cdbptr, q->q2.cdb_len, | ||
2658 | (ulong)q->sg_head, q->q1.sg_queue_cnt); | ||
2659 | |||
2660 | if (q->sg_head) { | ||
2661 | sgp = q->sg_head; | ||
2662 | printk("ASC_SG_HEAD at addr 0x%lx\n", (ulong)sgp); | ||
2663 | printk(" entry_cnt %u, queue_cnt %u\n", sgp->entry_cnt, | ||
2664 | sgp->queue_cnt); | ||
2665 | for (i = 0; i < sgp->entry_cnt; i++) { | ||
2666 | printk(" [%u]: addr 0x%lx, bytes %lu\n", | ||
2667 | i, (ulong)le32_to_cpu(sgp->sg_list[i].addr), | ||
2668 | (ulong)le32_to_cpu(sgp->sg_list[i].bytes)); | ||
2669 | } | ||
2670 | |||
2671 | } | ||
2672 | } | ||
2673 | |||
2674 | /* | ||
2675 | * asc_prt_asc_qdone_info() | ||
2676 | */ | ||
2677 | static void asc_prt_asc_qdone_info(ASC_QDONE_INFO *q) | ||
2678 | { | ||
2679 | printk("ASC_QDONE_INFO at addr 0x%lx\n", (ulong)q); | ||
2680 | printk(" srb_ptr 0x%lx, target_ix %u, cdb_len %u, tag_code %u,\n", | ||
2681 | (ulong)q->d2.srb_ptr, q->d2.target_ix, q->d2.cdb_len, | ||
2682 | q->d2.tag_code); | ||
2683 | printk | ||
2684 | (" done_stat 0x%x, host_stat 0x%x, scsi_stat 0x%x, scsi_msg 0x%x\n", | ||
2685 | q->d3.done_stat, q->d3.host_stat, q->d3.scsi_stat, q->d3.scsi_msg); | ||
2686 | } | ||
2687 | |||
2688 | /* | ||
2689 | * asc_prt_adv_dvc_var() | 2536 | * asc_prt_adv_dvc_var() |
2690 | * | 2537 | * |
2691 | * Display an ADV_DVC_VAR structure. | 2538 | * Display an ADV_DVC_VAR structure. |
@@ -2697,9 +2544,8 @@ static void asc_prt_adv_dvc_var(ADV_DVC_VAR *h) | |||
2697 | printk(" iop_base 0x%lx, err_code 0x%x, ultra_able 0x%x\n", | 2544 | printk(" iop_base 0x%lx, err_code 0x%x, ultra_able 0x%x\n", |
2698 | (ulong)h->iop_base, h->err_code, (unsigned)h->ultra_able); | 2545 | (ulong)h->iop_base, h->err_code, (unsigned)h->ultra_able); |
2699 | 2546 | ||
2700 | printk(" isr_callback 0x%lx, sdtr_able 0x%x, wdtr_able 0x%x\n", | 2547 | printk(" sdtr_able 0x%x, wdtr_able 0x%x\n", |
2701 | (ulong)h->isr_callback, (unsigned)h->sdtr_able, | 2548 | (unsigned)h->sdtr_able, (unsigned)h->wdtr_able); |
2702 | (unsigned)h->wdtr_able); | ||
2703 | 2549 | ||
2704 | printk(" start_motor 0x%x, scsi_reset_wait 0x%x\n", | 2550 | printk(" start_motor 0x%x, scsi_reset_wait 0x%x\n", |
2705 | (unsigned)h->start_motor, (unsigned)h->scsi_reset_wait); | 2551 | (unsigned)h->start_motor, (unsigned)h->scsi_reset_wait); |
@@ -2733,87 +2579,36 @@ static void asc_prt_adv_dvc_cfg(ADV_DVC_CFG *h) | |||
2733 | printk(" chip_version 0x%x, mcode_date 0x%x\n", | 2579 | printk(" chip_version 0x%x, mcode_date 0x%x\n", |
2734 | h->chip_version, h->mcode_date); | 2580 | h->chip_version, h->mcode_date); |
2735 | 2581 | ||
2736 | printk(" mcode_version 0x%x, pci_device_id 0x%x\n", | 2582 | printk(" mcode_version 0x%x, control_flag 0x%x\n", |
2737 | h->mcode_version, to_pci_dev(h->dev)->device); | 2583 | h->mcode_version, h->control_flag); |
2738 | |||
2739 | printk(" control_flag 0x%x\n", h->control_flag); | ||
2740 | } | 2584 | } |
2741 | 2585 | ||
2742 | /* | 2586 | /* |
2743 | * asc_prt_adv_scsi_req_q() | 2587 | * asc_prt_scsi_host() |
2744 | * | ||
2745 | * Display an ADV_SCSI_REQ_Q structure. | ||
2746 | */ | 2588 | */ |
2747 | static void asc_prt_adv_scsi_req_q(ADV_SCSI_REQ_Q *q) | 2589 | static void asc_prt_scsi_host(struct Scsi_Host *s) |
2748 | { | 2590 | { |
2749 | int sg_blk_cnt; | 2591 | struct asc_board *boardp = shost_priv(s); |
2750 | struct asc_sg_block *sg_ptr; | ||
2751 | |||
2752 | printk("ADV_SCSI_REQ_Q at addr 0x%lx\n", (ulong)q); | ||
2753 | |||
2754 | printk(" target_id %u, target_lun %u, srb_ptr 0x%lx, a_flag 0x%x\n", | ||
2755 | q->target_id, q->target_lun, (ulong)q->srb_ptr, q->a_flag); | ||
2756 | |||
2757 | printk(" cntl 0x%x, data_addr 0x%lx, vdata_addr 0x%lx\n", | ||
2758 | q->cntl, (ulong)le32_to_cpu(q->data_addr), (ulong)q->vdata_addr); | ||
2759 | |||
2760 | printk(" data_cnt %lu, sense_addr 0x%lx, sense_len %u,\n", | ||
2761 | (ulong)le32_to_cpu(q->data_cnt), | ||
2762 | (ulong)le32_to_cpu(q->sense_addr), q->sense_len); | ||
2763 | |||
2764 | printk | ||
2765 | (" cdb_len %u, done_status 0x%x, host_status 0x%x, scsi_status 0x%x\n", | ||
2766 | q->cdb_len, q->done_status, q->host_status, q->scsi_status); | ||
2767 | 2592 | ||
2768 | printk(" sg_working_ix 0x%x, target_cmd %u\n", | 2593 | printk("Scsi_Host at addr 0x%p, device %s\n", s, boardp->dev->bus_id); |
2769 | q->sg_working_ix, q->target_cmd); | 2594 | printk(" host_busy %u, host_no %d, last_reset %d,\n", |
2595 | s->host_busy, s->host_no, (unsigned)s->last_reset); | ||
2770 | 2596 | ||
2771 | printk(" scsiq_rptr 0x%lx, sg_real_addr 0x%lx, sg_list_ptr 0x%lx\n", | 2597 | printk(" base 0x%lx, io_port 0x%lx, irq %d,\n", |
2772 | (ulong)le32_to_cpu(q->scsiq_rptr), | 2598 | (ulong)s->base, (ulong)s->io_port, boardp->irq); |
2773 | (ulong)le32_to_cpu(q->sg_real_addr), (ulong)q->sg_list_ptr); | ||
2774 | 2599 | ||
2775 | /* Display the request's ADV_SG_BLOCK structures. */ | 2600 | printk(" dma_channel %d, this_id %d, can_queue %d,\n", |
2776 | if (q->sg_list_ptr != NULL) { | 2601 | s->dma_channel, s->this_id, s->can_queue); |
2777 | sg_blk_cnt = 0; | ||
2778 | while (1) { | ||
2779 | /* | ||
2780 | * 'sg_ptr' is a physical address. Convert it to a virtual | ||
2781 | * address by indexing 'sg_blk_cnt' into the virtual address | ||
2782 | * array 'sg_list_ptr'. | ||
2783 | * | ||
2784 | * XXX - Assumes all SG physical blocks are virtually contiguous. | ||
2785 | */ | ||
2786 | sg_ptr = | ||
2787 | &(((ADV_SG_BLOCK *)(q->sg_list_ptr))[sg_blk_cnt]); | ||
2788 | asc_prt_adv_sgblock(sg_blk_cnt, sg_ptr); | ||
2789 | if (sg_ptr->sg_ptr == 0) { | ||
2790 | break; | ||
2791 | } | ||
2792 | sg_blk_cnt++; | ||
2793 | } | ||
2794 | } | ||
2795 | } | ||
2796 | 2602 | ||
2797 | /* | 2603 | printk(" cmd_per_lun %d, sg_tablesize %d, unchecked_isa_dma %d\n", |
2798 | * asc_prt_adv_sgblock() | 2604 | s->cmd_per_lun, s->sg_tablesize, s->unchecked_isa_dma); |
2799 | * | ||
2800 | * Display an ADV_SG_BLOCK structure. | ||
2801 | */ | ||
2802 | static void asc_prt_adv_sgblock(int sgblockno, ADV_SG_BLOCK *b) | ||
2803 | { | ||
2804 | int i; | ||
2805 | 2605 | ||
2806 | printk(" ASC_SG_BLOCK at addr 0x%lx (sgblockno %d)\n", | 2606 | if (ASC_NARROW_BOARD(boardp)) { |
2807 | (ulong)b, sgblockno); | 2607 | asc_prt_asc_dvc_var(&boardp->dvc_var.asc_dvc_var); |
2808 | printk(" sg_cnt %u, sg_ptr 0x%lx\n", | 2608 | asc_prt_asc_dvc_cfg(&boardp->dvc_cfg.asc_dvc_cfg); |
2809 | b->sg_cnt, (ulong)le32_to_cpu(b->sg_ptr)); | 2609 | } else { |
2810 | BUG_ON(b->sg_cnt > NO_OF_SG_PER_BLOCK); | 2610 | asc_prt_adv_dvc_var(&boardp->dvc_var.adv_dvc_var); |
2811 | if (b->sg_ptr != 0) | 2611 | asc_prt_adv_dvc_cfg(&boardp->dvc_cfg.adv_dvc_cfg); |
2812 | BUG_ON(b->sg_cnt != NO_OF_SG_PER_BLOCK); | ||
2813 | for (i = 0; i < b->sg_cnt; i++) { | ||
2814 | printk(" [%u]: sg_addr 0x%lx, sg_count 0x%lx\n", | ||
2815 | i, (ulong)b->sg_list[i].sg_addr, | ||
2816 | (ulong)b->sg_list[i].sg_count); | ||
2817 | } | 2612 | } |
2818 | } | 2613 | } |
2819 | 2614 | ||
@@ -2873,6 +2668,137 @@ static void asc_prt_hex(char *f, uchar *s, int l) | |||
2873 | printk("\n"); | 2668 | printk("\n"); |
2874 | } | 2669 | } |
2875 | } | 2670 | } |
2671 | |||
2672 | /* | ||
2673 | * asc_prt_asc_scsi_q() | ||
2674 | */ | ||
2675 | static void asc_prt_asc_scsi_q(ASC_SCSI_Q *q) | ||
2676 | { | ||
2677 | ASC_SG_HEAD *sgp; | ||
2678 | int i; | ||
2679 | |||
2680 | printk("ASC_SCSI_Q at addr 0x%lx\n", (ulong)q); | ||
2681 | |||
2682 | printk | ||
2683 | (" target_ix 0x%x, target_lun %u, srb_ptr 0x%lx, tag_code 0x%x,\n", | ||
2684 | q->q2.target_ix, q->q1.target_lun, (ulong)q->q2.srb_ptr, | ||
2685 | q->q2.tag_code); | ||
2686 | |||
2687 | printk | ||
2688 | (" data_addr 0x%lx, data_cnt %lu, sense_addr 0x%lx, sense_len %u,\n", | ||
2689 | (ulong)le32_to_cpu(q->q1.data_addr), | ||
2690 | (ulong)le32_to_cpu(q->q1.data_cnt), | ||
2691 | (ulong)le32_to_cpu(q->q1.sense_addr), q->q1.sense_len); | ||
2692 | |||
2693 | printk(" cdbptr 0x%lx, cdb_len %u, sg_head 0x%lx, sg_queue_cnt %u\n", | ||
2694 | (ulong)q->cdbptr, q->q2.cdb_len, | ||
2695 | (ulong)q->sg_head, q->q1.sg_queue_cnt); | ||
2696 | |||
2697 | if (q->sg_head) { | ||
2698 | sgp = q->sg_head; | ||
2699 | printk("ASC_SG_HEAD at addr 0x%lx\n", (ulong)sgp); | ||
2700 | printk(" entry_cnt %u, queue_cnt %u\n", sgp->entry_cnt, | ||
2701 | sgp->queue_cnt); | ||
2702 | for (i = 0; i < sgp->entry_cnt; i++) { | ||
2703 | printk(" [%u]: addr 0x%lx, bytes %lu\n", | ||
2704 | i, (ulong)le32_to_cpu(sgp->sg_list[i].addr), | ||
2705 | (ulong)le32_to_cpu(sgp->sg_list[i].bytes)); | ||
2706 | } | ||
2707 | |||
2708 | } | ||
2709 | } | ||
2710 | |||
2711 | /* | ||
2712 | * asc_prt_asc_qdone_info() | ||
2713 | */ | ||
2714 | static void asc_prt_asc_qdone_info(ASC_QDONE_INFO *q) | ||
2715 | { | ||
2716 | printk("ASC_QDONE_INFO at addr 0x%lx\n", (ulong)q); | ||
2717 | printk(" srb_ptr 0x%lx, target_ix %u, cdb_len %u, tag_code %u,\n", | ||
2718 | (ulong)q->d2.srb_ptr, q->d2.target_ix, q->d2.cdb_len, | ||
2719 | q->d2.tag_code); | ||
2720 | printk | ||
2721 | (" done_stat 0x%x, host_stat 0x%x, scsi_stat 0x%x, scsi_msg 0x%x\n", | ||
2722 | q->d3.done_stat, q->d3.host_stat, q->d3.scsi_stat, q->d3.scsi_msg); | ||
2723 | } | ||
2724 | |||
2725 | /* | ||
2726 | * asc_prt_adv_sgblock() | ||
2727 | * | ||
2728 | * Display an ADV_SG_BLOCK structure. | ||
2729 | */ | ||
2730 | static void asc_prt_adv_sgblock(int sgblockno, ADV_SG_BLOCK *b) | ||
2731 | { | ||
2732 | int i; | ||
2733 | |||
2734 | printk(" ASC_SG_BLOCK at addr 0x%lx (sgblockno %d)\n", | ||
2735 | (ulong)b, sgblockno); | ||
2736 | printk(" sg_cnt %u, sg_ptr 0x%lx\n", | ||
2737 | b->sg_cnt, (ulong)le32_to_cpu(b->sg_ptr)); | ||
2738 | BUG_ON(b->sg_cnt > NO_OF_SG_PER_BLOCK); | ||
2739 | if (b->sg_ptr != 0) | ||
2740 | BUG_ON(b->sg_cnt != NO_OF_SG_PER_BLOCK); | ||
2741 | for (i = 0; i < b->sg_cnt; i++) { | ||
2742 | printk(" [%u]: sg_addr 0x%lx, sg_count 0x%lx\n", | ||
2743 | i, (ulong)b->sg_list[i].sg_addr, | ||
2744 | (ulong)b->sg_list[i].sg_count); | ||
2745 | } | ||
2746 | } | ||
2747 | |||
2748 | /* | ||
2749 | * asc_prt_adv_scsi_req_q() | ||
2750 | * | ||
2751 | * Display an ADV_SCSI_REQ_Q structure. | ||
2752 | */ | ||
2753 | static void asc_prt_adv_scsi_req_q(ADV_SCSI_REQ_Q *q) | ||
2754 | { | ||
2755 | int sg_blk_cnt; | ||
2756 | struct asc_sg_block *sg_ptr; | ||
2757 | |||
2758 | printk("ADV_SCSI_REQ_Q at addr 0x%lx\n", (ulong)q); | ||
2759 | |||
2760 | printk(" target_id %u, target_lun %u, srb_ptr 0x%lx, a_flag 0x%x\n", | ||
2761 | q->target_id, q->target_lun, (ulong)q->srb_ptr, q->a_flag); | ||
2762 | |||
2763 | printk(" cntl 0x%x, data_addr 0x%lx, vdata_addr 0x%lx\n", | ||
2764 | q->cntl, (ulong)le32_to_cpu(q->data_addr), (ulong)q->vdata_addr); | ||
2765 | |||
2766 | printk(" data_cnt %lu, sense_addr 0x%lx, sense_len %u,\n", | ||
2767 | (ulong)le32_to_cpu(q->data_cnt), | ||
2768 | (ulong)le32_to_cpu(q->sense_addr), q->sense_len); | ||
2769 | |||
2770 | printk | ||
2771 | (" cdb_len %u, done_status 0x%x, host_status 0x%x, scsi_status 0x%x\n", | ||
2772 | q->cdb_len, q->done_status, q->host_status, q->scsi_status); | ||
2773 | |||
2774 | printk(" sg_working_ix 0x%x, target_cmd %u\n", | ||
2775 | q->sg_working_ix, q->target_cmd); | ||
2776 | |||
2777 | printk(" scsiq_rptr 0x%lx, sg_real_addr 0x%lx, sg_list_ptr 0x%lx\n", | ||
2778 | (ulong)le32_to_cpu(q->scsiq_rptr), | ||
2779 | (ulong)le32_to_cpu(q->sg_real_addr), (ulong)q->sg_list_ptr); | ||
2780 | |||
2781 | /* Display the request's ADV_SG_BLOCK structures. */ | ||
2782 | if (q->sg_list_ptr != NULL) { | ||
2783 | sg_blk_cnt = 0; | ||
2784 | while (1) { | ||
2785 | /* | ||
2786 | * 'sg_ptr' is a physical address. Convert it to a virtual | ||
2787 | * address by indexing 'sg_blk_cnt' into the virtual address | ||
2788 | * array 'sg_list_ptr'. | ||
2789 | * | ||
2790 | * XXX - Assumes all SG physical blocks are virtually contiguous. | ||
2791 | */ | ||
2792 | sg_ptr = | ||
2793 | &(((ADV_SG_BLOCK *)(q->sg_list_ptr))[sg_blk_cnt]); | ||
2794 | asc_prt_adv_sgblock(sg_blk_cnt, sg_ptr); | ||
2795 | if (sg_ptr->sg_ptr == 0) { | ||
2796 | break; | ||
2797 | } | ||
2798 | sg_blk_cnt++; | ||
2799 | } | ||
2800 | } | ||
2801 | } | ||
2876 | #endif /* ADVANSYS_DEBUG */ | 2802 | #endif /* ADVANSYS_DEBUG */ |
2877 | 2803 | ||
2878 | /* | 2804 | /* |
@@ -2895,7 +2821,7 @@ static const char *advansys_info(struct Scsi_Host *shost) | |||
2895 | 2821 | ||
2896 | if (ASC_NARROW_BOARD(boardp)) { | 2822 | if (ASC_NARROW_BOARD(boardp)) { |
2897 | asc_dvc_varp = &boardp->dvc_var.asc_dvc_var; | 2823 | asc_dvc_varp = &boardp->dvc_var.asc_dvc_var; |
2898 | ASC_DBG(1, "advansys_info: begin\n"); | 2824 | ASC_DBG(1, "begin\n"); |
2899 | if (asc_dvc_varp->bus_type & ASC_IS_ISA) { | 2825 | if (asc_dvc_varp->bus_type & ASC_IS_ISA) { |
2900 | if ((asc_dvc_varp->bus_type & ASC_IS_ISAPNP) == | 2826 | if ((asc_dvc_varp->bus_type & ASC_IS_ISAPNP) == |
2901 | ASC_IS_ISAPNP) { | 2827 | ASC_IS_ISAPNP) { |
@@ -2955,7 +2881,7 @@ static const char *advansys_info(struct Scsi_Host *shost) | |||
2955 | (ulong)adv_dvc_varp->iop_base + boardp->asc_n_io_port - 1, boardp->irq); | 2881 | (ulong)adv_dvc_varp->iop_base + boardp->asc_n_io_port - 1, boardp->irq); |
2956 | } | 2882 | } |
2957 | BUG_ON(strlen(info) >= ASC_INFO_SIZE); | 2883 | BUG_ON(strlen(info) >= ASC_INFO_SIZE); |
2958 | ASC_DBG(1, "advansys_info: end\n"); | 2884 | ASC_DBG(1, "end\n"); |
2959 | return info; | 2885 | return info; |
2960 | } | 2886 | } |
2961 | 2887 | ||
@@ -4118,12 +4044,12 @@ asc_proc_copy(off_t advoffset, off_t offset, char *curbuf, int leftlen, | |||
4118 | { | 4044 | { |
4119 | int cnt = 0; | 4045 | int cnt = 0; |
4120 | 4046 | ||
4121 | ASC_DBG3(2, "asc_proc_copy: offset %d, advoffset %d, cplen %d\n", | 4047 | ASC_DBG(2, "offset %d, advoffset %d, cplen %d\n", |
4122 | (unsigned)offset, (unsigned)advoffset, cplen); | 4048 | (unsigned)offset, (unsigned)advoffset, cplen); |
4123 | if (offset <= advoffset) { | 4049 | if (offset <= advoffset) { |
4124 | /* Read offset below current offset, copy everything. */ | 4050 | /* Read offset below current offset, copy everything. */ |
4125 | cnt = min(cplen, leftlen); | 4051 | cnt = min(cplen, leftlen); |
4126 | ASC_DBG3(2, "asc_proc_copy: curbuf 0x%lx, cp 0x%lx, cnt %d\n", | 4052 | ASC_DBG(2, "curbuf 0x%lx, cp 0x%lx, cnt %d\n", |
4127 | (ulong)curbuf, (ulong)cp, cnt); | 4053 | (ulong)curbuf, (ulong)cp, cnt); |
4128 | memcpy(curbuf, cp, cnt); | 4054 | memcpy(curbuf, cp, cnt); |
4129 | } else if (offset < advoffset + cplen) { | 4055 | } else if (offset < advoffset + cplen) { |
@@ -4131,7 +4057,7 @@ asc_proc_copy(off_t advoffset, off_t offset, char *curbuf, int leftlen, | |||
4131 | cnt = (advoffset + cplen) - offset; | 4057 | cnt = (advoffset + cplen) - offset; |
4132 | cp = (cp + cplen) - cnt; | 4058 | cp = (cp + cplen) - cnt; |
4133 | cnt = min(cnt, leftlen); | 4059 | cnt = min(cnt, leftlen); |
4134 | ASC_DBG3(2, "asc_proc_copy: curbuf 0x%lx, cp 0x%lx, cnt %d\n", | 4060 | ASC_DBG(2, "curbuf 0x%lx, cp 0x%lx, cnt %d\n", |
4135 | (ulong)curbuf, (ulong)cp, cnt); | 4061 | (ulong)curbuf, (ulong)cp, cnt); |
4136 | memcpy(curbuf, cp, cnt); | 4062 | memcpy(curbuf, cp, cnt); |
4137 | } | 4063 | } |
@@ -4270,7 +4196,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4270 | char *curbuf; | 4196 | char *curbuf; |
4271 | off_t advoffset; | 4197 | off_t advoffset; |
4272 | 4198 | ||
4273 | ASC_DBG(1, "advansys_proc_info: begin\n"); | 4199 | ASC_DBG(1, "begin\n"); |
4274 | 4200 | ||
4275 | /* | 4201 | /* |
4276 | * User write not supported. | 4202 | * User write not supported. |
@@ -4302,7 +4228,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4302 | totcnt += cnt; | 4228 | totcnt += cnt; |
4303 | leftlen -= cnt; | 4229 | leftlen -= cnt; |
4304 | if (leftlen == 0) { | 4230 | if (leftlen == 0) { |
4305 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4231 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4306 | return totcnt; | 4232 | return totcnt; |
4307 | } | 4233 | } |
4308 | advoffset += cplen; | 4234 | advoffset += cplen; |
@@ -4320,7 +4246,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4320 | totcnt += cnt; | 4246 | totcnt += cnt; |
4321 | leftlen -= cnt; | 4247 | leftlen -= cnt; |
4322 | if (leftlen == 0) { | 4248 | if (leftlen == 0) { |
4323 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4249 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4324 | return totcnt; | 4250 | return totcnt; |
4325 | } | 4251 | } |
4326 | advoffset += cplen; | 4252 | advoffset += cplen; |
@@ -4337,7 +4263,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4337 | totcnt += cnt; | 4263 | totcnt += cnt; |
4338 | leftlen -= cnt; | 4264 | leftlen -= cnt; |
4339 | if (leftlen == 0) { | 4265 | if (leftlen == 0) { |
4340 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4266 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4341 | return totcnt; | 4267 | return totcnt; |
4342 | } | 4268 | } |
4343 | advoffset += cplen; | 4269 | advoffset += cplen; |
@@ -4357,7 +4283,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4357 | totcnt += cnt; | 4283 | totcnt += cnt; |
4358 | leftlen -= cnt; | 4284 | leftlen -= cnt; |
4359 | if (leftlen == 0) { | 4285 | if (leftlen == 0) { |
4360 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4286 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4361 | return totcnt; | 4287 | return totcnt; |
4362 | } | 4288 | } |
4363 | advoffset += cplen; | 4289 | advoffset += cplen; |
@@ -4373,7 +4299,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4373 | totcnt += cnt; | 4299 | totcnt += cnt; |
4374 | leftlen -= cnt; | 4300 | leftlen -= cnt; |
4375 | if (leftlen == 0) { | 4301 | if (leftlen == 0) { |
4376 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4302 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4377 | return totcnt; | 4303 | return totcnt; |
4378 | } | 4304 | } |
4379 | advoffset += cplen; | 4305 | advoffset += cplen; |
@@ -4390,7 +4316,7 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4390 | totcnt += cnt; | 4316 | totcnt += cnt; |
4391 | leftlen -= cnt; | 4317 | leftlen -= cnt; |
4392 | if (leftlen == 0) { | 4318 | if (leftlen == 0) { |
4393 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4319 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4394 | return totcnt; | 4320 | return totcnt; |
4395 | } | 4321 | } |
4396 | advoffset += cplen; | 4322 | advoffset += cplen; |
@@ -4412,13 +4338,13 @@ advansys_proc_info(struct Scsi_Host *shost, char *buffer, char **start, | |||
4412 | totcnt += cnt; | 4338 | totcnt += cnt; |
4413 | leftlen -= cnt; | 4339 | leftlen -= cnt; |
4414 | if (leftlen == 0) { | 4340 | if (leftlen == 0) { |
4415 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4341 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4416 | return totcnt; | 4342 | return totcnt; |
4417 | } | 4343 | } |
4418 | advoffset += cplen; | 4344 | advoffset += cplen; |
4419 | curbuf += cnt; | 4345 | curbuf += cnt; |
4420 | 4346 | ||
4421 | ASC_DBG1(1, "advansys_proc_info: totcnt %d\n", totcnt); | 4347 | ASC_DBG(1, "totcnt %d\n", totcnt); |
4422 | 4348 | ||
4423 | return totcnt; | 4349 | return totcnt; |
4424 | } | 4350 | } |
@@ -4530,11 +4456,10 @@ static int AscFindSignature(PortAddr iop_base) | |||
4530 | { | 4456 | { |
4531 | ushort sig_word; | 4457 | ushort sig_word; |
4532 | 4458 | ||
4533 | ASC_DBG2(1, "AscFindSignature: AscGetChipSignatureByte(0x%x) 0x%x\n", | 4459 | ASC_DBG(1, "AscGetChipSignatureByte(0x%x) 0x%x\n", |
4534 | iop_base, AscGetChipSignatureByte(iop_base)); | 4460 | iop_base, AscGetChipSignatureByte(iop_base)); |
4535 | if (AscGetChipSignatureByte(iop_base) == (uchar)ASC_1000_ID1B) { | 4461 | if (AscGetChipSignatureByte(iop_base) == (uchar)ASC_1000_ID1B) { |
4536 | ASC_DBG2(1, | 4462 | ASC_DBG(1, "AscGetChipSignatureWord(0x%x) 0x%x\n", |
4537 | "AscFindSignature: AscGetChipSignatureWord(0x%x) 0x%x\n", | ||
4538 | iop_base, AscGetChipSignatureWord(iop_base)); | 4463 | iop_base, AscGetChipSignatureWord(iop_base)); |
4539 | sig_word = AscGetChipSignatureWord(iop_base); | 4464 | sig_word = AscGetChipSignatureWord(iop_base); |
4540 | if ((sig_word == (ushort)ASC_1000_ID0W) || | 4465 | if ((sig_word == (ushort)ASC_1000_ID0W) || |
@@ -4785,18 +4710,17 @@ AscLoadMicroCode(PortAddr iop_base, | |||
4785 | AscMemWordCopyPtrToLram(iop_base, s_addr, mcode_buf, mcode_word_size); | 4710 | AscMemWordCopyPtrToLram(iop_base, s_addr, mcode_buf, mcode_word_size); |
4786 | 4711 | ||
4787 | chksum = AscMemSumLramWord(iop_base, s_addr, mcode_word_size); | 4712 | chksum = AscMemSumLramWord(iop_base, s_addr, mcode_word_size); |
4788 | ASC_DBG1(1, "AscLoadMicroCode: chksum 0x%lx\n", (ulong)chksum); | 4713 | ASC_DBG(1, "chksum 0x%lx\n", (ulong)chksum); |
4789 | mcode_chksum = (ushort)AscMemSumLramWord(iop_base, | 4714 | mcode_chksum = (ushort)AscMemSumLramWord(iop_base, |
4790 | (ushort)ASC_CODE_SEC_BEG, | 4715 | (ushort)ASC_CODE_SEC_BEG, |
4791 | (ushort)((mcode_size - | 4716 | (ushort)((mcode_size - |
4792 | s_addr - (ushort) | 4717 | s_addr - (ushort) |
4793 | ASC_CODE_SEC_BEG) / | 4718 | ASC_CODE_SEC_BEG) / |
4794 | 2)); | 4719 | 2)); |
4795 | ASC_DBG1(1, "AscLoadMicroCode: mcode_chksum 0x%lx\n", | 4720 | ASC_DBG(1, "mcode_chksum 0x%lx\n", (ulong)mcode_chksum); |
4796 | (ulong)mcode_chksum); | ||
4797 | AscWriteLramWord(iop_base, ASCV_MCODE_CHKSUM_W, mcode_chksum); | 4721 | AscWriteLramWord(iop_base, ASCV_MCODE_CHKSUM_W, mcode_chksum); |
4798 | AscWriteLramWord(iop_base, ASCV_MCODE_SIZE_W, mcode_size); | 4722 | AscWriteLramWord(iop_base, ASCV_MCODE_SIZE_W, mcode_size); |
4799 | return (chksum); | 4723 | return chksum; |
4800 | } | 4724 | } |
4801 | 4725 | ||
4802 | /* Microcode buffer is kept after initialization for error recovery. */ | 4726 | /* Microcode buffer is kept after initialization for error recovery. */ |
@@ -6511,8 +6435,7 @@ static ushort AscInitAsc1000Driver(ASC_DVC_VAR *asc_dvc) | |||
6511 | warn_code |= AscInitLram(asc_dvc); | 6435 | warn_code |= AscInitLram(asc_dvc); |
6512 | if (asc_dvc->err_code != 0) | 6436 | if (asc_dvc->err_code != 0) |
6513 | return UW_ERR; | 6437 | return UW_ERR; |
6514 | ASC_DBG1(1, "AscInitAsc1000Driver: _asc_mcode_chksum 0x%lx\n", | 6438 | ASC_DBG(1, "_asc_mcode_chksum 0x%lx\n", (ulong)_asc_mcode_chksum); |
6515 | (ulong)_asc_mcode_chksum); | ||
6516 | if (AscLoadMicroCode(iop_base, 0, _asc_mcode_buf, | 6439 | if (AscLoadMicroCode(iop_base, 0, _asc_mcode_buf, |
6517 | _asc_mcode_size) != _asc_mcode_chksum) { | 6440 | _asc_mcode_size) != _asc_mcode_chksum) { |
6518 | asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; | 6441 | asc_dvc->err_code |= ASC_IERR_MCODE_CHKSUM; |
@@ -6613,7 +6536,7 @@ DvcGetPhyAddr(ADV_DVC_VAR *asc_dvc, ADV_SCSI_REQ_Q *scsiq, | |||
6613 | { | 6536 | { |
6614 | ADV_PADDR paddr = virt_to_bus(vaddr); | 6537 | ADV_PADDR paddr = virt_to_bus(vaddr); |
6615 | 6538 | ||
6616 | ASC_DBG4(4, "DvcGetPhyAddr: vaddr 0x%p, lenp 0x%p *lenp %lu, paddr 0x%lx\n", | 6539 | ASC_DBG(4, "vaddr 0x%p, lenp 0x%p *lenp %lu, paddr 0x%lx\n", |
6617 | vaddr, lenp, (ulong)*((ulong *)lenp), (ulong)paddr); | 6540 | vaddr, lenp, (ulong)*((ulong *)lenp), (ulong)paddr); |
6618 | 6541 | ||
6619 | return paddr; | 6542 | return paddr; |
@@ -8291,8 +8214,7 @@ static void adv_async_callback(ADV_DVC_VAR *adv_dvc_varp, uchar code) | |||
8291 | /* | 8214 | /* |
8292 | * The firmware detected a SCSI Bus reset. | 8215 | * The firmware detected a SCSI Bus reset. |
8293 | */ | 8216 | */ |
8294 | ASC_DBG(0, | 8217 | ASC_DBG(0, "ADV_ASYNC_SCSI_BUS_RESET_DET\n"); |
8295 | "adv_async_callback: ADV_ASYNC_SCSI_BUS_RESET_DET\n"); | ||
8296 | break; | 8218 | break; |
8297 | 8219 | ||
8298 | case ADV_ASYNC_RDMA_FAILURE: | 8220 | case ADV_ASYNC_RDMA_FAILURE: |
@@ -8301,7 +8223,7 @@ static void adv_async_callback(ADV_DVC_VAR *adv_dvc_varp, uchar code) | |||
8301 | * possibly the chip if it is unresponsive. Log the error | 8223 | * possibly the chip if it is unresponsive. Log the error |
8302 | * with a unique code. | 8224 | * with a unique code. |
8303 | */ | 8225 | */ |
8304 | ASC_DBG(0, "adv_async_callback: ADV_ASYNC_RDMA_FAILURE\n"); | 8226 | ASC_DBG(0, "ADV_ASYNC_RDMA_FAILURE\n"); |
8305 | AdvResetChipAndSB(adv_dvc_varp); | 8227 | AdvResetChipAndSB(adv_dvc_varp); |
8306 | break; | 8228 | break; |
8307 | 8229 | ||
@@ -8309,11 +8231,11 @@ static void adv_async_callback(ADV_DVC_VAR *adv_dvc_varp, uchar code) | |||
8309 | /* | 8231 | /* |
8310 | * Host generated SCSI bus reset occurred. | 8232 | * Host generated SCSI bus reset occurred. |
8311 | */ | 8233 | */ |
8312 | ASC_DBG(0, "adv_async_callback: ADV_HOST_SCSI_BUS_RESET\n"); | 8234 | ASC_DBG(0, "ADV_HOST_SCSI_BUS_RESET\n"); |
8313 | break; | 8235 | break; |
8314 | 8236 | ||
8315 | default: | 8237 | default: |
8316 | ASC_DBG1(0, "DvcAsyncCallBack: unknown code 0x%x\n", code); | 8238 | ASC_DBG(0, "unknown code 0x%x\n", code); |
8317 | break; | 8239 | break; |
8318 | } | 8240 | } |
8319 | } | 8241 | } |
@@ -8332,7 +8254,7 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8332 | struct Scsi_Host *shost; | 8254 | struct Scsi_Host *shost; |
8333 | ADV_DCNT resid_cnt; | 8255 | ADV_DCNT resid_cnt; |
8334 | 8256 | ||
8335 | ASC_DBG2(1, "adv_isr_callback: adv_dvc_varp 0x%lx, scsiqp 0x%lx\n", | 8257 | ASC_DBG(1, "adv_dvc_varp 0x%lx, scsiqp 0x%lx\n", |
8336 | (ulong)adv_dvc_varp, (ulong)scsiqp); | 8258 | (ulong)adv_dvc_varp, (ulong)scsiqp); |
8337 | ASC_DBG_PRT_ADV_SCSI_REQ_Q(2, scsiqp); | 8259 | ASC_DBG_PRT_ADV_SCSI_REQ_Q(2, scsiqp); |
8338 | 8260 | ||
@@ -8342,7 +8264,7 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8342 | * completed ADV_SCSI_REQ_Q structure. | 8264 | * completed ADV_SCSI_REQ_Q structure. |
8343 | */ | 8265 | */ |
8344 | reqp = (adv_req_t *)ADV_U32_TO_VADDR(scsiqp->srb_ptr); | 8266 | reqp = (adv_req_t *)ADV_U32_TO_VADDR(scsiqp->srb_ptr); |
8345 | ASC_DBG1(1, "adv_isr_callback: reqp 0x%lx\n", (ulong)reqp); | 8267 | ASC_DBG(1, "reqp 0x%lx\n", (ulong)reqp); |
8346 | if (reqp == NULL) { | 8268 | if (reqp == NULL) { |
8347 | ASC_PRINT("adv_isr_callback: reqp is NULL\n"); | 8269 | ASC_PRINT("adv_isr_callback: reqp is NULL\n"); |
8348 | return; | 8270 | return; |
@@ -8357,7 +8279,7 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8357 | * determined. | 8279 | * determined. |
8358 | */ | 8280 | */ |
8359 | scp = reqp->cmndp; | 8281 | scp = reqp->cmndp; |
8360 | ASC_DBG1(1, "adv_isr_callback: scp 0x%lx\n", (ulong)scp); | 8282 | ASC_DBG(1, "scp 0x%p\n", scp); |
8361 | if (scp == NULL) { | 8283 | if (scp == NULL) { |
8362 | ASC_PRINT | 8284 | ASC_PRINT |
8363 | ("adv_isr_callback: scp is NULL; adv_req_t dropped.\n"); | 8285 | ("adv_isr_callback: scp is NULL; adv_req_t dropped.\n"); |
@@ -8367,7 +8289,7 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8367 | 8289 | ||
8368 | shost = scp->device->host; | 8290 | shost = scp->device->host; |
8369 | ASC_STATS(shost, callback); | 8291 | ASC_STATS(shost, callback); |
8370 | ASC_DBG1(1, "adv_isr_callback: shost 0x%lx\n", (ulong)shost); | 8292 | ASC_DBG(1, "shost 0x%p\n", shost); |
8371 | 8293 | ||
8372 | boardp = shost_priv(shost); | 8294 | boardp = shost_priv(shost); |
8373 | BUG_ON(adv_dvc_varp != &boardp->dvc_var.adv_dvc_var); | 8295 | BUG_ON(adv_dvc_varp != &boardp->dvc_var.adv_dvc_var); |
@@ -8377,7 +8299,7 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8377 | */ | 8299 | */ |
8378 | switch (scsiqp->done_status) { | 8300 | switch (scsiqp->done_status) { |
8379 | case QD_NO_ERROR: | 8301 | case QD_NO_ERROR: |
8380 | ASC_DBG(2, "adv_isr_callback: QD_NO_ERROR\n"); | 8302 | ASC_DBG(2, "QD_NO_ERROR\n"); |
8381 | scp->result = 0; | 8303 | scp->result = 0; |
8382 | 8304 | ||
8383 | /* | 8305 | /* |
@@ -8389,20 +8311,18 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8389 | resid_cnt = le32_to_cpu(scsiqp->data_cnt); | 8311 | resid_cnt = le32_to_cpu(scsiqp->data_cnt); |
8390 | if (scp->request_bufflen != 0 && resid_cnt != 0 && | 8312 | if (scp->request_bufflen != 0 && resid_cnt != 0 && |
8391 | resid_cnt <= scp->request_bufflen) { | 8313 | resid_cnt <= scp->request_bufflen) { |
8392 | ASC_DBG1(1, | 8314 | ASC_DBG(1, "underrun condition %lu bytes\n", |
8393 | "adv_isr_callback: underrun condition %lu bytes\n", | ||
8394 | (ulong)resid_cnt); | 8315 | (ulong)resid_cnt); |
8395 | scp->resid = resid_cnt; | 8316 | scp->resid = resid_cnt; |
8396 | } | 8317 | } |
8397 | break; | 8318 | break; |
8398 | 8319 | ||
8399 | case QD_WITH_ERROR: | 8320 | case QD_WITH_ERROR: |
8400 | ASC_DBG(2, "adv_isr_callback: QD_WITH_ERROR\n"); | 8321 | ASC_DBG(2, "QD_WITH_ERROR\n"); |
8401 | switch (scsiqp->host_status) { | 8322 | switch (scsiqp->host_status) { |
8402 | case QHSTA_NO_ERROR: | 8323 | case QHSTA_NO_ERROR: |
8403 | if (scsiqp->scsi_status == SAM_STAT_CHECK_CONDITION) { | 8324 | if (scsiqp->scsi_status == SAM_STAT_CHECK_CONDITION) { |
8404 | ASC_DBG(2, | 8325 | ASC_DBG(2, "SAM_STAT_CHECK_CONDITION\n"); |
8405 | "adv_isr_callback: SAM_STAT_CHECK_CONDITION\n"); | ||
8406 | ASC_DBG_PRT_SENSE(2, scp->sense_buffer, | 8326 | ASC_DBG_PRT_SENSE(2, scp->sense_buffer, |
8407 | sizeof(scp->sense_buffer)); | 8327 | sizeof(scp->sense_buffer)); |
8408 | /* | 8328 | /* |
@@ -8426,22 +8346,20 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8426 | 8346 | ||
8427 | default: | 8347 | default: |
8428 | /* Some other QHSTA error occurred. */ | 8348 | /* Some other QHSTA error occurred. */ |
8429 | ASC_DBG1(1, "adv_isr_callback: host_status 0x%x\n", | 8349 | ASC_DBG(1, "host_status 0x%x\n", scsiqp->host_status); |
8430 | scsiqp->host_status); | ||
8431 | scp->result = HOST_BYTE(DID_BAD_TARGET); | 8350 | scp->result = HOST_BYTE(DID_BAD_TARGET); |
8432 | break; | 8351 | break; |
8433 | } | 8352 | } |
8434 | break; | 8353 | break; |
8435 | 8354 | ||
8436 | case QD_ABORTED_BY_HOST: | 8355 | case QD_ABORTED_BY_HOST: |
8437 | ASC_DBG(1, "adv_isr_callback: QD_ABORTED_BY_HOST\n"); | 8356 | ASC_DBG(1, "QD_ABORTED_BY_HOST\n"); |
8438 | scp->result = | 8357 | scp->result = |
8439 | HOST_BYTE(DID_ABORT) | STATUS_BYTE(scsiqp->scsi_status); | 8358 | HOST_BYTE(DID_ABORT) | STATUS_BYTE(scsiqp->scsi_status); |
8440 | break; | 8359 | break; |
8441 | 8360 | ||
8442 | default: | 8361 | default: |
8443 | ASC_DBG1(1, "adv_isr_callback: done_status 0x%x\n", | 8362 | ASC_DBG(1, "done_status 0x%x\n", scsiqp->done_status); |
8444 | scsiqp->done_status); | ||
8445 | scp->result = | 8363 | scp->result = |
8446 | HOST_BYTE(DID_ERROR) | STATUS_BYTE(scsiqp->scsi_status); | 8364 | HOST_BYTE(DID_ERROR) | STATUS_BYTE(scsiqp->scsi_status); |
8447 | break; | 8365 | break; |
@@ -8479,7 +8397,7 @@ static void adv_isr_callback(ADV_DVC_VAR *adv_dvc_varp, ADV_SCSI_REQ_Q *scsiqp) | |||
8479 | reqp->next_reqp = boardp->adv_reqp; | 8397 | reqp->next_reqp = boardp->adv_reqp; |
8480 | boardp->adv_reqp = reqp; | 8398 | boardp->adv_reqp = reqp; |
8481 | 8399 | ||
8482 | ASC_DBG(1, "adv_isr_callback: done\n"); | 8400 | ASC_DBG(1, "done\n"); |
8483 | 8401 | ||
8484 | return; | 8402 | return; |
8485 | } | 8403 | } |
@@ -9299,8 +9217,7 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) | |||
9299 | struct scsi_cmnd *scp; | 9217 | struct scsi_cmnd *scp; |
9300 | struct Scsi_Host *shost; | 9218 | struct Scsi_Host *shost; |
9301 | 9219 | ||
9302 | ASC_DBG2(1, "asc_isr_callback: asc_dvc_varp 0x%lx, qdonep 0x%lx\n", | 9220 | ASC_DBG(1, "asc_dvc_varp 0x%p, qdonep 0x%p\n", asc_dvc_varp, qdonep); |
9303 | (ulong)asc_dvc_varp, (ulong)qdonep); | ||
9304 | ASC_DBG_PRT_ASC_QDONE_INFO(2, qdonep); | 9221 | ASC_DBG_PRT_ASC_QDONE_INFO(2, qdonep); |
9305 | 9222 | ||
9306 | /* | 9223 | /* |
@@ -9308,7 +9225,7 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) | |||
9308 | * command that has been completed. | 9225 | * command that has been completed. |
9309 | */ | 9226 | */ |
9310 | scp = (struct scsi_cmnd *)ASC_U32_TO_VADDR(qdonep->d2.srb_ptr); | 9227 | scp = (struct scsi_cmnd *)ASC_U32_TO_VADDR(qdonep->d2.srb_ptr); |
9311 | ASC_DBG1(1, "asc_isr_callback: scp 0x%lx\n", (ulong)scp); | 9228 | ASC_DBG(1, "scp 0x%p\n", scp); |
9312 | 9229 | ||
9313 | if (scp == NULL) { | 9230 | if (scp == NULL) { |
9314 | ASC_PRINT("asc_isr_callback: scp is NULL\n"); | 9231 | ASC_PRINT("asc_isr_callback: scp is NULL\n"); |
@@ -9318,7 +9235,7 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) | |||
9318 | 9235 | ||
9319 | shost = scp->device->host; | 9236 | shost = scp->device->host; |
9320 | ASC_STATS(shost, callback); | 9237 | ASC_STATS(shost, callback); |
9321 | ASC_DBG1(1, "asc_isr_callback: shost 0x%lx\n", (ulong)shost); | 9238 | ASC_DBG(1, "shost 0x%p\n", shost); |
9322 | 9239 | ||
9323 | boardp = shost_priv(shost); | 9240 | boardp = shost_priv(shost); |
9324 | BUG_ON(asc_dvc_varp != &boardp->dvc_var.asc_dvc_var); | 9241 | BUG_ON(asc_dvc_varp != &boardp->dvc_var.asc_dvc_var); |
@@ -9328,7 +9245,7 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) | |||
9328 | */ | 9245 | */ |
9329 | switch (qdonep->d3.done_stat) { | 9246 | switch (qdonep->d3.done_stat) { |
9330 | case QD_NO_ERROR: | 9247 | case QD_NO_ERROR: |
9331 | ASC_DBG(2, "asc_isr_callback: QD_NO_ERROR\n"); | 9248 | ASC_DBG(2, "QD_NO_ERROR\n"); |
9332 | scp->result = 0; | 9249 | scp->result = 0; |
9333 | 9250 | ||
9334 | /* | 9251 | /* |
@@ -9339,20 +9256,18 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) | |||
9339 | */ | 9256 | */ |
9340 | if (scp->request_bufflen != 0 && qdonep->remain_bytes != 0 && | 9257 | if (scp->request_bufflen != 0 && qdonep->remain_bytes != 0 && |
9341 | qdonep->remain_bytes <= scp->request_bufflen) { | 9258 | qdonep->remain_bytes <= scp->request_bufflen) { |
9342 | ASC_DBG1(1, | 9259 | ASC_DBG(1, "underrun condition %u bytes\n", |
9343 | "asc_isr_callback: underrun condition %u bytes\n", | ||
9344 | (unsigned)qdonep->remain_bytes); | 9260 | (unsigned)qdonep->remain_bytes); |
9345 | scp->resid = qdonep->remain_bytes; | 9261 | scp->resid = qdonep->remain_bytes; |
9346 | } | 9262 | } |
9347 | break; | 9263 | break; |
9348 | 9264 | ||
9349 | case QD_WITH_ERROR: | 9265 | case QD_WITH_ERROR: |
9350 | ASC_DBG(2, "asc_isr_callback: QD_WITH_ERROR\n"); | 9266 | ASC_DBG(2, "QD_WITH_ERROR\n"); |
9351 | switch (qdonep->d3.host_stat) { | 9267 | switch (qdonep->d3.host_stat) { |
9352 | case QHSTA_NO_ERROR: | 9268 | case QHSTA_NO_ERROR: |
9353 | if (qdonep->d3.scsi_stat == SAM_STAT_CHECK_CONDITION) { | 9269 | if (qdonep->d3.scsi_stat == SAM_STAT_CHECK_CONDITION) { |
9354 | ASC_DBG(2, | 9270 | ASC_DBG(2, "SAM_STAT_CHECK_CONDITION\n"); |
9355 | "asc_isr_callback: SAM_STAT_CHECK_CONDITION\n"); | ||
9356 | ASC_DBG_PRT_SENSE(2, scp->sense_buffer, | 9271 | ASC_DBG_PRT_SENSE(2, scp->sense_buffer, |
9357 | sizeof(scp->sense_buffer)); | 9272 | sizeof(scp->sense_buffer)); |
9358 | /* | 9273 | /* |
@@ -9376,15 +9291,14 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) | |||
9376 | 9291 | ||
9377 | default: | 9292 | default: |
9378 | /* QHSTA error occurred */ | 9293 | /* QHSTA error occurred */ |
9379 | ASC_DBG1(1, "asc_isr_callback: host_stat 0x%x\n", | 9294 | ASC_DBG(1, "host_stat 0x%x\n", qdonep->d3.host_stat); |
9380 | qdonep->d3.host_stat); | ||
9381 | scp->result = HOST_BYTE(DID_BAD_TARGET); | 9295 | scp->result = HOST_BYTE(DID_BAD_TARGET); |
9382 | break; | 9296 | break; |
9383 | } | 9297 | } |
9384 | break; | 9298 | break; |
9385 | 9299 | ||
9386 | case QD_ABORTED_BY_HOST: | 9300 | case QD_ABORTED_BY_HOST: |
9387 | ASC_DBG(1, "asc_isr_callback: QD_ABORTED_BY_HOST\n"); | 9301 | ASC_DBG(1, "QD_ABORTED_BY_HOST\n"); |
9388 | scp->result = | 9302 | scp->result = |
9389 | HOST_BYTE(DID_ABORT) | MSG_BYTE(qdonep->d3. | 9303 | HOST_BYTE(DID_ABORT) | MSG_BYTE(qdonep->d3. |
9390 | scsi_msg) | | 9304 | scsi_msg) | |
@@ -9392,8 +9306,7 @@ static void asc_isr_callback(ASC_DVC_VAR *asc_dvc_varp, ASC_QDONE_INFO *qdonep) | |||
9392 | break; | 9306 | break; |
9393 | 9307 | ||
9394 | default: | 9308 | default: |
9395 | ASC_DBG1(1, "asc_isr_callback: done_stat 0x%x\n", | 9309 | ASC_DBG(1, "done_stat 0x%x\n", qdonep->d3.done_stat); |
9396 | qdonep->d3.done_stat); | ||
9397 | scp->result = | 9310 | scp->result = |
9398 | HOST_BYTE(DID_ERROR) | MSG_BYTE(qdonep->d3. | 9311 | HOST_BYTE(DID_ERROR) | MSG_BYTE(qdonep->d3. |
9399 | scsi_msg) | | 9312 | scsi_msg) | |
@@ -9681,7 +9594,7 @@ static int advansys_reset(struct scsi_cmnd *scp) | |||
9681 | int status; | 9594 | int status; |
9682 | int ret = SUCCESS; | 9595 | int ret = SUCCESS; |
9683 | 9596 | ||
9684 | ASC_DBG1(1, "advansys_reset: 0x%p\n", scp); | 9597 | ASC_DBG(1, "0x%p\n", scp); |
9685 | 9598 | ||
9686 | ASC_STATS(shost, reset); | 9599 | ASC_STATS(shost, reset); |
9687 | 9600 | ||
@@ -9691,7 +9604,7 @@ static int advansys_reset(struct scsi_cmnd *scp) | |||
9691 | ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var; | 9604 | ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var; |
9692 | 9605 | ||
9693 | /* Reset the chip and SCSI bus. */ | 9606 | /* Reset the chip and SCSI bus. */ |
9694 | ASC_DBG(1, "advansys_reset: before AscInitAsc1000Driver()\n"); | 9607 | ASC_DBG(1, "before AscInitAsc1000Driver()\n"); |
9695 | status = AscInitAsc1000Driver(asc_dvc); | 9608 | status = AscInitAsc1000Driver(asc_dvc); |
9696 | 9609 | ||
9697 | /* Refer to ASC_IERR_* defintions for meaning of 'err_code'. */ | 9610 | /* Refer to ASC_IERR_* defintions for meaning of 'err_code'. */ |
@@ -9707,7 +9620,7 @@ static int advansys_reset(struct scsi_cmnd *scp) | |||
9707 | "successful\n"); | 9620 | "successful\n"); |
9708 | } | 9621 | } |
9709 | 9622 | ||
9710 | ASC_DBG(1, "advansys_reset: after AscInitAsc1000Driver()\n"); | 9623 | ASC_DBG(1, "after AscInitAsc1000Driver()\n"); |
9711 | spin_lock_irqsave(&boardp->lock, flags); | 9624 | spin_lock_irqsave(&boardp->lock, flags); |
9712 | } else { | 9625 | } else { |
9713 | /* | 9626 | /* |
@@ -9719,7 +9632,7 @@ static int advansys_reset(struct scsi_cmnd *scp) | |||
9719 | /* | 9632 | /* |
9720 | * Reset the target's SCSI bus. | 9633 | * Reset the target's SCSI bus. |
9721 | */ | 9634 | */ |
9722 | ASC_DBG(1, "advansys_reset: before AdvResetChipAndSB()\n"); | 9635 | ASC_DBG(1, "before AdvResetChipAndSB()\n"); |
9723 | switch (AdvResetChipAndSB(adv_dvc)) { | 9636 | switch (AdvResetChipAndSB(adv_dvc)) { |
9724 | case ASC_TRUE: | 9637 | case ASC_TRUE: |
9725 | scmd_printk(KERN_INFO, scp, "SCSI bus reset " | 9638 | scmd_printk(KERN_INFO, scp, "SCSI bus reset " |
@@ -9739,7 +9652,7 @@ static int advansys_reset(struct scsi_cmnd *scp) | |||
9739 | boardp->last_reset = jiffies; | 9652 | boardp->last_reset = jiffies; |
9740 | spin_unlock_irqrestore(&boardp->lock, flags); | 9653 | spin_unlock_irqrestore(&boardp->lock, flags); |
9741 | 9654 | ||
9742 | ASC_DBG1(1, "advansys_reset: ret %d\n", ret); | 9655 | ASC_DBG(1, "ret %d\n", ret); |
9743 | 9656 | ||
9744 | return ret; | 9657 | return ret; |
9745 | } | 9658 | } |
@@ -9761,7 +9674,7 @@ advansys_biosparam(struct scsi_device *sdev, struct block_device *bdev, | |||
9761 | { | 9674 | { |
9762 | struct asc_board *boardp = shost_priv(sdev->host); | 9675 | struct asc_board *boardp = shost_priv(sdev->host); |
9763 | 9676 | ||
9764 | ASC_DBG(1, "advansys_biosparam: begin\n"); | 9677 | ASC_DBG(1, "begin\n"); |
9765 | ASC_STATS(sdev->host, biosparam); | 9678 | ASC_STATS(sdev->host, biosparam); |
9766 | if (ASC_NARROW_BOARD(boardp)) { | 9679 | if (ASC_NARROW_BOARD(boardp)) { |
9767 | if ((boardp->dvc_var.asc_dvc_var.dvc_cntl & | 9680 | if ((boardp->dvc_var.asc_dvc_var.dvc_cntl & |
@@ -9783,7 +9696,7 @@ advansys_biosparam(struct scsi_device *sdev, struct block_device *bdev, | |||
9783 | } | 9696 | } |
9784 | } | 9697 | } |
9785 | ip[2] = (unsigned long)capacity / (ip[0] * ip[1]); | 9698 | ip[2] = (unsigned long)capacity / (ip[0] * ip[1]); |
9786 | ASC_DBG(1, "advansys_biosparam: end\n"); | 9699 | ASC_DBG(1, "end\n"); |
9787 | return 0; | 9700 | return 0; |
9788 | } | 9701 | } |
9789 | 9702 | ||
@@ -9799,17 +9712,17 @@ static irqreturn_t advansys_interrupt(int irq, void *dev_id) | |||
9799 | struct asc_board *boardp = shost_priv(shost); | 9712 | struct asc_board *boardp = shost_priv(shost); |
9800 | irqreturn_t result = IRQ_NONE; | 9713 | irqreturn_t result = IRQ_NONE; |
9801 | 9714 | ||
9802 | ASC_DBG1(2, "advansys_interrupt: boardp 0x%p\n", boardp); | 9715 | ASC_DBG(2, "boardp 0x%p\n", boardp); |
9803 | spin_lock_irqsave(&boardp->lock, flags); | 9716 | spin_lock_irqsave(&boardp->lock, flags); |
9804 | if (ASC_NARROW_BOARD(boardp)) { | 9717 | if (ASC_NARROW_BOARD(boardp)) { |
9805 | if (AscIsIntPending(shost->io_port)) { | 9718 | if (AscIsIntPending(shost->io_port)) { |
9806 | result = IRQ_HANDLED; | 9719 | result = IRQ_HANDLED; |
9807 | ASC_STATS(shost, interrupt); | 9720 | ASC_STATS(shost, interrupt); |
9808 | ASC_DBG(1, "advansys_interrupt: before AscISR()\n"); | 9721 | ASC_DBG(1, "before AscISR()\n"); |
9809 | AscISR(&boardp->dvc_var.asc_dvc_var); | 9722 | AscISR(&boardp->dvc_var.asc_dvc_var); |
9810 | } | 9723 | } |
9811 | } else { | 9724 | } else { |
9812 | ASC_DBG(1, "advansys_interrupt: before AdvISR()\n"); | 9725 | ASC_DBG(1, "before AdvISR()\n"); |
9813 | if (AdvISR(&boardp->dvc_var.adv_dvc_var)) { | 9726 | if (AdvISR(&boardp->dvc_var.adv_dvc_var)) { |
9814 | result = IRQ_HANDLED; | 9727 | result = IRQ_HANDLED; |
9815 | ASC_STATS(shost, interrupt); | 9728 | ASC_STATS(shost, interrupt); |
@@ -9817,7 +9730,7 @@ static irqreturn_t advansys_interrupt(int irq, void *dev_id) | |||
9817 | } | 9730 | } |
9818 | spin_unlock_irqrestore(&boardp->lock, flags); | 9731 | spin_unlock_irqrestore(&boardp->lock, flags); |
9819 | 9732 | ||
9820 | ASC_DBG(1, "advansys_interrupt: end\n"); | 9733 | ASC_DBG(1, "end\n"); |
9821 | return result; | 9734 | return result; |
9822 | } | 9735 | } |
9823 | 9736 | ||
@@ -10186,7 +10099,7 @@ static int asc_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, | |||
10186 | } | 10099 | } |
10187 | } | 10100 | } |
10188 | 10101 | ||
10189 | ASC_DBG_PRT_ASC_SCSI_Q(2, &asc_scsi_q); | 10102 | ASC_DBG_PRT_ASC_SCSI_Q(2, asc_scsi_q); |
10190 | ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); | 10103 | ASC_DBG_PRT_CDB(1, scp->cmnd, scp->cmd_len); |
10191 | 10104 | ||
10192 | return ASC_NOERROR; | 10105 | return ASC_NOERROR; |
@@ -10229,7 +10142,7 @@ adv_get_sglist(struct asc_board *boardp, adv_req_t *reqp, struct scsi_cmnd *scp, | |||
10229 | * (15) scatter-gather elements. | 10142 | * (15) scatter-gather elements. |
10230 | */ | 10143 | */ |
10231 | if ((sgblkp = boardp->adv_sgblkp) == NULL) { | 10144 | if ((sgblkp = boardp->adv_sgblkp) == NULL) { |
10232 | ASC_DBG(1, "adv_get_sglist: no free adv_sgblk_t\n"); | 10145 | ASC_DBG(1, "no free adv_sgblk_t\n"); |
10233 | ASC_STATS(scp->device->host, adv_build_nosg); | 10146 | ASC_STATS(scp->device->host, adv_build_nosg); |
10234 | 10147 | ||
10235 | /* | 10148 | /* |
@@ -10328,7 +10241,7 @@ adv_build_req(struct asc_board *boardp, struct scsi_cmnd *scp, | |||
10328 | * the command. | 10241 | * the command. |
10329 | */ | 10242 | */ |
10330 | if (boardp->adv_reqp == NULL) { | 10243 | if (boardp->adv_reqp == NULL) { |
10331 | ASC_DBG(1, "adv_build_req: no free adv_req_t\n"); | 10244 | ASC_DBG(1, "no free adv_req_t\n"); |
10332 | ASC_STATS(scp->device->host, adv_build_noreq); | 10245 | ASC_STATS(scp->device->host, adv_build_noreq); |
10333 | return ASC_BUSY; | 10246 | return ASC_BUSY; |
10334 | } else { | 10247 | } else { |
@@ -11205,7 +11118,7 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) | |||
11205 | int ret, err_code; | 11118 | int ret, err_code; |
11206 | struct asc_board *boardp = shost_priv(scp->device->host); | 11119 | struct asc_board *boardp = shost_priv(scp->device->host); |
11207 | 11120 | ||
11208 | ASC_DBG1(1, "asc_execute_scsi_cmnd: scp 0x%p\n", scp); | 11121 | ASC_DBG(1, "scp 0x%p\n", scp); |
11209 | 11122 | ||
11210 | if (ASC_NARROW_BOARD(boardp)) { | 11123 | if (ASC_NARROW_BOARD(boardp)) { |
11211 | ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var; | 11124 | ASC_DVC_VAR *asc_dvc = &boardp->dvc_var.asc_dvc_var; |
@@ -11227,12 +11140,10 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) | |||
11227 | 11140 | ||
11228 | switch (adv_build_req(boardp, scp, &adv_scsiqp)) { | 11141 | switch (adv_build_req(boardp, scp, &adv_scsiqp)) { |
11229 | case ASC_NOERROR: | 11142 | case ASC_NOERROR: |
11230 | ASC_DBG(3, "asc_execute_scsi_cmnd: adv_build_req " | 11143 | ASC_DBG(3, "adv_build_req ASC_NOERROR\n"); |
11231 | "ASC_NOERROR\n"); | ||
11232 | break; | 11144 | break; |
11233 | case ASC_BUSY: | 11145 | case ASC_BUSY: |
11234 | ASC_DBG(1, "asc_execute_scsi_cmnd: adv_build_req " | 11146 | ASC_DBG(1, "adv_build_req ASC_BUSY\n"); |
11235 | "ASC_BUSY\n"); | ||
11236 | /* | 11147 | /* |
11237 | * The asc_stats fields 'adv_build_noreq' and | 11148 | * The asc_stats fields 'adv_build_noreq' and |
11238 | * 'adv_build_nosg' count wide board busy conditions. | 11149 | * 'adv_build_nosg' count wide board busy conditions. |
@@ -11242,8 +11153,7 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) | |||
11242 | return ASC_BUSY; | 11153 | return ASC_BUSY; |
11243 | case ASC_ERROR: | 11154 | case ASC_ERROR: |
11244 | default: | 11155 | default: |
11245 | ASC_DBG(1, "asc_execute_scsi_cmnd: adv_build_req " | 11156 | ASC_DBG(1, "adv_build_req ASC_ERROR\n"); |
11246 | "ASC_ERROR\n"); | ||
11247 | ASC_STATS(scp->device->host, build_error); | 11157 | ASC_STATS(scp->device->host, build_error); |
11248 | return ASC_ERROR; | 11158 | return ASC_ERROR; |
11249 | } | 11159 | } |
@@ -11260,8 +11170,7 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) | |||
11260 | * successful request counter. Wrapping doesn't matter. | 11170 | * successful request counter. Wrapping doesn't matter. |
11261 | */ | 11171 | */ |
11262 | boardp->reqcnt[scp->device->id]++; | 11172 | boardp->reqcnt[scp->device->id]++; |
11263 | ASC_DBG(1, "asc_execute_scsi_cmnd: ExeScsiQueue(), " | 11173 | ASC_DBG(1, "ExeScsiQueue() ASC_NOERROR\n"); |
11264 | "ASC_NOERROR\n"); | ||
11265 | break; | 11174 | break; |
11266 | case ASC_BUSY: | 11175 | case ASC_BUSY: |
11267 | ASC_STATS(scp->device->host, exe_busy); | 11176 | ASC_STATS(scp->device->host, exe_busy); |
@@ -11280,7 +11189,7 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *scp) | |||
11280 | break; | 11189 | break; |
11281 | } | 11190 | } |
11282 | 11191 | ||
11283 | ASC_DBG(1, "asc_execute_scsi_cmnd: end\n"); | 11192 | ASC_DBG(1, "end\n"); |
11284 | return ret; | 11193 | return ret; |
11285 | } | 11194 | } |
11286 | 11195 | ||
@@ -11911,7 +11820,7 @@ static ushort __devinit AscInitFromEEP(ASC_DVC_VAR *asc_dvc) | |||
11911 | AscSetChipCfgMsw(iop_base, cfg_msw); | 11820 | AscSetChipCfgMsw(iop_base, cfg_msw); |
11912 | } | 11821 | } |
11913 | chksum = AscGetEEPConfig(iop_base, eep_config, asc_dvc->bus_type); | 11822 | chksum = AscGetEEPConfig(iop_base, eep_config, asc_dvc->bus_type); |
11914 | ASC_DBG1(1, "AscInitFromEEP: chksum 0x%x\n", chksum); | 11823 | ASC_DBG(1, "chksum 0x%x\n", chksum); |
11915 | if (chksum == 0) { | 11824 | if (chksum == 0) { |
11916 | chksum = 0xaa55; | 11825 | chksum = 0xaa55; |
11917 | } | 11826 | } |
@@ -11932,13 +11841,11 @@ static ushort __devinit AscInitFromEEP(ASC_DVC_VAR *asc_dvc) | |||
11932 | } | 11841 | } |
11933 | eep_config->cfg_msw &= ~ASC_CFG_MSW_CLR_MASK; | 11842 | eep_config->cfg_msw &= ~ASC_CFG_MSW_CLR_MASK; |
11934 | eep_config->cfg_lsw |= ASC_CFG0_HOST_INT_ON; | 11843 | eep_config->cfg_lsw |= ASC_CFG0_HOST_INT_ON; |
11935 | ASC_DBG1(1, "AscInitFromEEP: eep_config->chksum 0x%x\n", | 11844 | ASC_DBG(1, "eep_config->chksum 0x%x\n", eep_config->chksum); |
11936 | eep_config->chksum); | ||
11937 | if (chksum != eep_config->chksum) { | 11845 | if (chksum != eep_config->chksum) { |
11938 | if (AscGetChipVersion(iop_base, asc_dvc->bus_type) == | 11846 | if (AscGetChipVersion(iop_base, asc_dvc->bus_type) == |
11939 | ASC_CHIP_VER_PCI_ULTRA_3050) { | 11847 | ASC_CHIP_VER_PCI_ULTRA_3050) { |
11940 | ASC_DBG(1, | 11848 | ASC_DBG(1, "chksum error ignored; EEPROM-less board\n"); |
11941 | "AscInitFromEEP: chksum error ignored; EEPROM-less board\n"); | ||
11942 | eep_config->init_sdtr = 0xFF; | 11849 | eep_config->init_sdtr = 0xFF; |
11943 | eep_config->disc_enable = 0xFF; | 11850 | eep_config->disc_enable = 0xFF; |
11944 | eep_config->start_motor = 0xFF; | 11851 | eep_config->start_motor = 0xFF; |
@@ -13517,11 +13424,11 @@ AdvInitGetConfig(struct pci_dev *pdev, struct asc_board *boardp) | |||
13517 | asc_dvc->cfg->chip_version = | 13424 | asc_dvc->cfg->chip_version = |
13518 | AdvGetChipVersion(iop_base, asc_dvc->bus_type); | 13425 | AdvGetChipVersion(iop_base, asc_dvc->bus_type); |
13519 | 13426 | ||
13520 | ASC_DBG2(1, "AdvInitGetConfig: iopb_chip_id_1: 0x%x 0x%x\n", | 13427 | ASC_DBG(1, "iopb_chip_id_1: 0x%x 0x%x\n", |
13521 | (ushort)AdvReadByteRegister(iop_base, IOPB_CHIP_ID_1), | 13428 | (ushort)AdvReadByteRegister(iop_base, IOPB_CHIP_ID_1), |
13522 | (ushort)ADV_CHIP_ID_BYTE); | 13429 | (ushort)ADV_CHIP_ID_BYTE); |
13523 | 13430 | ||
13524 | ASC_DBG2(1, "AdvInitGetConfig: iopw_chip_id_0: 0x%x 0x%x\n", | 13431 | ASC_DBG(1, "iopw_chip_id_0: 0x%x 0x%x\n", |
13525 | (ushort)AdvReadWordRegister(iop_base, IOPW_CHIP_ID_0), | 13432 | (ushort)AdvReadWordRegister(iop_base, IOPW_CHIP_ID_0), |
13526 | (ushort)ADV_CHIP_ID_WORD); | 13433 | (ushort)ADV_CHIP_ID_WORD); |
13527 | 13434 | ||
@@ -13616,7 +13523,7 @@ advansys_wide_init_chip(struct asc_board *boardp, ADV_DVC_VAR *adv_dvc_varp) | |||
13616 | * is about 4 KB, so allocate all at once. | 13523 | * is about 4 KB, so allocate all at once. |
13617 | */ | 13524 | */ |
13618 | boardp->carrp = kmalloc(ADV_CARRIER_BUFSIZE, GFP_KERNEL); | 13525 | boardp->carrp = kmalloc(ADV_CARRIER_BUFSIZE, GFP_KERNEL); |
13619 | ASC_DBG1(1, "advansys_wide_init_chip: carrp 0x%p\n", boardp->carrp); | 13526 | ASC_DBG(1, "carrp 0x%p\n", boardp->carrp); |
13620 | 13527 | ||
13621 | if (!boardp->carrp) | 13528 | if (!boardp->carrp) |
13622 | goto kmalloc_failed; | 13529 | goto kmalloc_failed; |
@@ -13629,8 +13536,7 @@ advansys_wide_init_chip(struct asc_board *boardp, ADV_DVC_VAR *adv_dvc_varp) | |||
13629 | for (req_cnt = adv_dvc_varp->max_host_qng; req_cnt > 0; req_cnt--) { | 13536 | for (req_cnt = adv_dvc_varp->max_host_qng; req_cnt > 0; req_cnt--) { |
13630 | reqp = kmalloc(sizeof(adv_req_t) * req_cnt, GFP_KERNEL); | 13537 | reqp = kmalloc(sizeof(adv_req_t) * req_cnt, GFP_KERNEL); |
13631 | 13538 | ||
13632 | ASC_DBG3(1, "advansys_wide_init_chip: reqp 0x%p, req_cnt %d, " | 13539 | ASC_DBG(1, "reqp 0x%p, req_cnt %d, bytes %lu\n", reqp, req_cnt, |
13633 | "bytes %lu\n", reqp, req_cnt, | ||
13634 | (ulong)sizeof(adv_req_t) * req_cnt); | 13540 | (ulong)sizeof(adv_req_t) * req_cnt); |
13635 | 13541 | ||
13636 | if (reqp) | 13542 | if (reqp) |
@@ -13658,8 +13564,7 @@ advansys_wide_init_chip(struct asc_board *boardp, ADV_DVC_VAR *adv_dvc_varp) | |||
13658 | 13564 | ||
13659 | } | 13565 | } |
13660 | 13566 | ||
13661 | ASC_DBG3(1, "advansys_wide_init_chip: sg_cnt %d * %u = %u bytes\n", | 13567 | ASC_DBG(1, "sg_cnt %d * %u = %u bytes\n", sg_cnt, sizeof(adv_sgblk_t), |
13662 | sg_cnt, sizeof(adv_sgblk_t), | ||
13663 | (unsigned)(sizeof(adv_sgblk_t) * sg_cnt)); | 13568 | (unsigned)(sizeof(adv_sgblk_t) * sg_cnt)); |
13664 | 13569 | ||
13665 | if (!boardp->adv_sgblkp) | 13570 | if (!boardp->adv_sgblkp) |
@@ -13679,15 +13584,13 @@ advansys_wide_init_chip(struct asc_board *boardp, ADV_DVC_VAR *adv_dvc_varp) | |||
13679 | boardp->adv_reqp = &reqp[0]; | 13584 | boardp->adv_reqp = &reqp[0]; |
13680 | 13585 | ||
13681 | if (adv_dvc_varp->chip_type == ADV_CHIP_ASC3550) { | 13586 | if (adv_dvc_varp->chip_type == ADV_CHIP_ASC3550) { |
13682 | ASC_DBG(2, "advansys_wide_init_chip: AdvInitAsc3550Driver()\n"); | 13587 | ASC_DBG(2, "AdvInitAsc3550Driver()\n"); |
13683 | warn_code = AdvInitAsc3550Driver(adv_dvc_varp); | 13588 | warn_code = AdvInitAsc3550Driver(adv_dvc_varp); |
13684 | } else if (adv_dvc_varp->chip_type == ADV_CHIP_ASC38C0800) { | 13589 | } else if (adv_dvc_varp->chip_type == ADV_CHIP_ASC38C0800) { |
13685 | ASC_DBG(2, "advansys_wide_init_chip: AdvInitAsc38C0800Driver()" | 13590 | ASC_DBG(2, "AdvInitAsc38C0800Driver()\n"); |
13686 | "\n"); | ||
13687 | warn_code = AdvInitAsc38C0800Driver(adv_dvc_varp); | 13591 | warn_code = AdvInitAsc38C0800Driver(adv_dvc_varp); |
13688 | } else { | 13592 | } else { |
13689 | ASC_DBG(2, "advansys_wide_init_chip: AdvInitAsc38C1600Driver()" | 13593 | ASC_DBG(2, "AdvInitAsc38C1600Driver()\n"); |
13690 | "\n"); | ||
13691 | warn_code = AdvInitAsc38C1600Driver(adv_dvc_varp); | 13594 | warn_code = AdvInitAsc38C1600Driver(adv_dvc_varp); |
13692 | } | 13595 | } |
13693 | err_code = adv_dvc_varp->err_code; | 13596 | err_code = adv_dvc_varp->err_code; |
@@ -13734,7 +13637,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
13734 | pdev = (bus_type == ASC_IS_PCI) ? to_pci_dev(boardp->dev) : NULL; | 13637 | pdev = (bus_type == ASC_IS_PCI) ? to_pci_dev(boardp->dev) : NULL; |
13735 | 13638 | ||
13736 | if (ASC_NARROW_BOARD(boardp)) { | 13639 | if (ASC_NARROW_BOARD(boardp)) { |
13737 | ASC_DBG(1, "advansys_board_found: narrow board\n"); | 13640 | ASC_DBG(1, "narrow board\n"); |
13738 | asc_dvc_varp = &boardp->dvc_var.asc_dvc_var; | 13641 | asc_dvc_varp = &boardp->dvc_var.asc_dvc_var; |
13739 | asc_dvc_varp->bus_type = bus_type; | 13642 | asc_dvc_varp->bus_type = bus_type; |
13740 | asc_dvc_varp->drv_ptr = boardp; | 13643 | asc_dvc_varp->drv_ptr = boardp; |
@@ -13743,18 +13646,17 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
13743 | asc_dvc_varp->iop_base = iop; | 13646 | asc_dvc_varp->iop_base = iop; |
13744 | } else { | 13647 | } else { |
13745 | #ifdef CONFIG_PCI | 13648 | #ifdef CONFIG_PCI |
13746 | ASC_DBG(1, "advansys_board_found: wide board\n"); | ||
13747 | adv_dvc_varp = &boardp->dvc_var.adv_dvc_var; | 13649 | adv_dvc_varp = &boardp->dvc_var.adv_dvc_var; |
13748 | adv_dvc_varp->drv_ptr = boardp; | 13650 | adv_dvc_varp->drv_ptr = boardp; |
13749 | adv_dvc_varp->cfg = &boardp->dvc_cfg.adv_dvc_cfg; | 13651 | adv_dvc_varp->cfg = &boardp->dvc_cfg.adv_dvc_cfg; |
13750 | if (pdev->device == PCI_DEVICE_ID_ASP_ABP940UW) { | 13652 | if (pdev->device == PCI_DEVICE_ID_ASP_ABP940UW) { |
13751 | ASC_DBG(1, "advansys_board_found: ASC-3550\n"); | 13653 | ASC_DBG(1, "wide board ASC-3550\n"); |
13752 | adv_dvc_varp->chip_type = ADV_CHIP_ASC3550; | 13654 | adv_dvc_varp->chip_type = ADV_CHIP_ASC3550; |
13753 | } else if (pdev->device == PCI_DEVICE_ID_38C0800_REV1) { | 13655 | } else if (pdev->device == PCI_DEVICE_ID_38C0800_REV1) { |
13754 | ASC_DBG(1, "advansys_board_found: ASC-38C0800\n"); | 13656 | ASC_DBG(1, "wide board ASC-38C0800\n"); |
13755 | adv_dvc_varp->chip_type = ADV_CHIP_ASC38C0800; | 13657 | adv_dvc_varp->chip_type = ADV_CHIP_ASC38C0800; |
13756 | } else { | 13658 | } else { |
13757 | ASC_DBG(1, "advansys_board_found: ASC-38C1600\n"); | 13659 | ASC_DBG(1, "wide board ASC-38C1600\n"); |
13758 | adv_dvc_varp->chip_type = ADV_CHIP_ASC38C1600; | 13660 | adv_dvc_varp->chip_type = ADV_CHIP_ASC38C1600; |
13759 | } | 13661 | } |
13760 | 13662 | ||
@@ -13769,9 +13671,8 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
13769 | ret = -ENODEV; | 13671 | ret = -ENODEV; |
13770 | goto err_shost; | 13672 | goto err_shost; |
13771 | } | 13673 | } |
13772 | adv_dvc_varp->iop_base = (AdvPortAddr)boardp->ioremap_addr | 13674 | adv_dvc_varp->iop_base = (AdvPortAddr)boardp->ioremap_addr; |
13773 | ASC_DBG1(1, "advansys_board_found: iop_base: 0x%lx\n", | 13675 | ASC_DBG(1, "iop_base: 0x%p\n", adv_dvc_varp->iop_base); |
13774 | adv_dvc_varp->iop_base); | ||
13775 | 13676 | ||
13776 | /* | 13677 | /* |
13777 | * Even though it isn't used to access wide boards, other | 13678 | * Even though it isn't used to access wide boards, other |
@@ -13780,9 +13681,8 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
13780 | */ | 13681 | */ |
13781 | boardp->ioport = iop; | 13682 | boardp->ioport = iop; |
13782 | 13683 | ||
13783 | ASC_DBG2(1, "advansys_board_found: iopb_chip_id_1 0x%x, " | 13684 | ASC_DBG(1, "iopb_chip_id_1 0x%x, iopw_chip_id_0 0x%x\n", |
13784 | "iopw_chip_id_0 0x%x\n", (ushort)inp(iop + 1), | 13685 | (ushort)inp(iop + 1), (ushort)inpw(iop)); |
13785 | (ushort)inpw(iop)); | ||
13786 | #endif /* CONFIG_PCI */ | 13686 | #endif /* CONFIG_PCI */ |
13787 | } | 13687 | } |
13788 | 13688 | ||
@@ -13841,7 +13741,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
13841 | * longer be used. If the bus_type field must be | 13741 | * longer be used. If the bus_type field must be |
13842 | * referenced only use the bit-wise AND operator "&". | 13742 | * referenced only use the bit-wise AND operator "&". |
13843 | */ | 13743 | */ |
13844 | ASC_DBG(2, "advansys_board_found: AscInitGetConfig()\n"); | 13744 | ASC_DBG(2, "AscInitGetConfig()\n"); |
13845 | ret = AscInitGetConfig(boardp) ? -ENODEV : 0; | 13745 | ret = AscInitGetConfig(boardp) ? -ENODEV : 0; |
13846 | } else { | 13746 | } else { |
13847 | #ifdef CONFIG_PCI | 13747 | #ifdef CONFIG_PCI |
@@ -13851,7 +13751,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
13851 | */ | 13751 | */ |
13852 | shost->unchecked_isa_dma = FALSE; | 13752 | shost->unchecked_isa_dma = FALSE; |
13853 | share_irq = IRQF_SHARED; | 13753 | share_irq = IRQF_SHARED; |
13854 | ASC_DBG(2, "advansys_board_found: AdvInitGetConfig()\n"); | 13754 | ASC_DBG(2, "AdvInitGetConfig()\n"); |
13855 | 13755 | ||
13856 | ret = AdvInitGetConfig(pdev, boardp) ? -ENODEV : 0; | 13756 | ret = AdvInitGetConfig(pdev, boardp) ? -ENODEV : 0; |
13857 | #endif /* CONFIG_PCI */ | 13757 | #endif /* CONFIG_PCI */ |
@@ -13900,7 +13800,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
13900 | /* | 13800 | /* |
13901 | * Modify board configuration. | 13801 | * Modify board configuration. |
13902 | */ | 13802 | */ |
13903 | ASC_DBG(2, "advansys_board_found: AscInitSetConfig()\n"); | 13803 | ASC_DBG(2, "AscInitSetConfig()\n"); |
13904 | ret = AscInitSetConfig(pdev, boardp) ? -ENODEV : 0; | 13804 | ret = AscInitSetConfig(pdev, boardp) ? -ENODEV : 0; |
13905 | if (ret) | 13805 | if (ret) |
13906 | goto err_free_proc; | 13806 | goto err_free_proc; |
@@ -14081,7 +13981,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
14081 | shost->sg_tablesize = SG_ALL; | 13981 | shost->sg_tablesize = SG_ALL; |
14082 | } | 13982 | } |
14083 | 13983 | ||
14084 | ASC_DBG1(1, "advansys_board_found: sg_tablesize: %d\n", shost->sg_tablesize); | 13984 | ASC_DBG(1, "sg_tablesize: %d\n", shost->sg_tablesize); |
14085 | 13985 | ||
14086 | /* BIOS start address. */ | 13986 | /* BIOS start address. */ |
14087 | if (ASC_NARROW_BOARD(boardp)) { | 13987 | if (ASC_NARROW_BOARD(boardp)) { |
@@ -14101,12 +14001,10 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
14101 | AdvReadWordLram(adv_dvc_varp->iop_base, | 14001 | AdvReadWordLram(adv_dvc_varp->iop_base, |
14102 | BIOS_CODELEN, boardp->bios_codelen); | 14002 | BIOS_CODELEN, boardp->bios_codelen); |
14103 | 14003 | ||
14104 | ASC_DBG2(1, | 14004 | ASC_DBG(1, "bios_signature 0x%x, bios_version 0x%x\n", |
14105 | "advansys_board_found: bios_signature 0x%x, bios_version 0x%x\n", | ||
14106 | boardp->bios_signature, boardp->bios_version); | 14005 | boardp->bios_signature, boardp->bios_version); |
14107 | 14006 | ||
14108 | ASC_DBG2(1, | 14007 | ASC_DBG(1, "bios_codeseg 0x%x, bios_codelen 0x%x\n", |
14109 | "advansys_board_found: bios_codeseg 0x%x, bios_codelen 0x%x\n", | ||
14110 | boardp->bios_codeseg, boardp->bios_codelen); | 14008 | boardp->bios_codeseg, boardp->bios_codelen); |
14111 | 14009 | ||
14112 | /* | 14010 | /* |
@@ -14148,7 +14046,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
14148 | #endif /* CONFIG_ISA */ | 14046 | #endif /* CONFIG_ISA */ |
14149 | 14047 | ||
14150 | /* Register IRQ Number. */ | 14048 | /* Register IRQ Number. */ |
14151 | ASC_DBG1(2, "advansys_board_found: request_irq() %d\n", boardp->irq); | 14049 | ASC_DBG(2, "request_irq(%d, %p)\n", boardp->irq, shost); |
14152 | 14050 | ||
14153 | ret = request_irq(boardp->irq, advansys_interrupt, share_irq, | 14051 | ret = request_irq(boardp->irq, advansys_interrupt, share_irq, |
14154 | DRV_NAME, shost); | 14052 | DRV_NAME, shost); |
@@ -14174,7 +14072,7 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
14174 | * Initialize board RISC chip and enable interrupts. | 14072 | * Initialize board RISC chip and enable interrupts. |
14175 | */ | 14073 | */ |
14176 | if (ASC_NARROW_BOARD(boardp)) { | 14074 | if (ASC_NARROW_BOARD(boardp)) { |
14177 | ASC_DBG(2, "advansys_board_found: AscInitAsc1000Driver()\n"); | 14075 | ASC_DBG(2, "AscInitAsc1000Driver()\n"); |
14178 | warn_code = AscInitAsc1000Driver(asc_dvc_varp); | 14076 | warn_code = AscInitAsc1000Driver(asc_dvc_varp); |
14179 | 14077 | ||
14180 | if (warn_code || asc_dvc_varp->err_code) { | 14078 | if (warn_code || asc_dvc_varp->err_code) { |
@@ -14225,11 +14123,11 @@ static int __devinit advansys_board_found(struct Scsi_Host *shost, | |||
14225 | static int advansys_release(struct Scsi_Host *shost) | 14123 | static int advansys_release(struct Scsi_Host *shost) |
14226 | { | 14124 | { |
14227 | struct asc_board *boardp = shost_priv(shost); | 14125 | struct asc_board *boardp = shost_priv(shost); |
14228 | ASC_DBG(1, "advansys_release: begin\n"); | 14126 | ASC_DBG(1, "begin\n"); |
14229 | scsi_remove_host(shost); | 14127 | scsi_remove_host(shost); |
14230 | free_irq(boardp->irq, shost); | 14128 | free_irq(boardp->irq, shost); |
14231 | if (shost->dma_channel != NO_ISA_DMA) { | 14129 | if (shost->dma_channel != NO_ISA_DMA) { |
14232 | ASC_DBG(1, "advansys_release: free_dma()\n"); | 14130 | ASC_DBG(1, "free_dma()\n"); |
14233 | free_dma(shost->dma_channel); | 14131 | free_dma(shost->dma_channel); |
14234 | } | 14132 | } |
14235 | if (!ASC_NARROW_BOARD(boardp)) { | 14133 | if (!ASC_NARROW_BOARD(boardp)) { |
@@ -14238,7 +14136,7 @@ static int advansys_release(struct Scsi_Host *shost) | |||
14238 | } | 14136 | } |
14239 | kfree(boardp->prtbuf); | 14137 | kfree(boardp->prtbuf); |
14240 | scsi_host_put(shost); | 14138 | scsi_host_put(shost); |
14241 | ASC_DBG(1, "advansys_release: end\n"); | 14139 | ASC_DBG(1, "end\n"); |
14242 | return 0; | 14140 | return 0; |
14243 | } | 14141 | } |
14244 | 14142 | ||
@@ -14273,11 +14171,10 @@ static int __devinit advansys_isa_probe(struct device *dev, unsigned int id) | |||
14273 | struct asc_board *board; | 14171 | struct asc_board *board; |
14274 | 14172 | ||
14275 | if (!request_region(iop_base, ASC_IOADR_GAP, DRV_NAME)) { | 14173 | if (!request_region(iop_base, ASC_IOADR_GAP, DRV_NAME)) { |
14276 | ASC_DBG1(1, "advansys_isa_match: I/O port 0x%x busy\n", | 14174 | ASC_DBG(1, "I/O port 0x%x busy\n", iop_base); |
14277 | iop_base); | ||
14278 | return -ENODEV; | 14175 | return -ENODEV; |
14279 | } | 14176 | } |
14280 | ASC_DBG1(1, "advansys_isa_match: probing I/O port 0x%x\n", iop_base); | 14177 | ASC_DBG(1, "probing I/O port 0x%x\n", iop_base); |
14281 | if (!AscFindSignature(iop_base)) | 14178 | if (!AscFindSignature(iop_base)) |
14282 | goto release_region; | 14179 | goto release_region; |
14283 | if (!(AscGetChipVersion(iop_base, ASC_IS_ISA) & ASC_CHIP_VER_ISA_BIT)) | 14180 | if (!(AscGetChipVersion(iop_base, ASC_IS_ISA) & ASC_CHIP_VER_ISA_BIT)) |
@@ -14351,11 +14248,10 @@ static int __devinit advansys_vlb_probe(struct device *dev, unsigned int id) | |||
14351 | struct asc_board *board; | 14248 | struct asc_board *board; |
14352 | 14249 | ||
14353 | if (!request_region(iop_base, ASC_IOADR_GAP, DRV_NAME)) { | 14250 | if (!request_region(iop_base, ASC_IOADR_GAP, DRV_NAME)) { |
14354 | ASC_DBG1(1, "advansys_vlb_match: I/O port 0x%x busy\n", | 14251 | ASC_DBG(1, "I/O port 0x%x busy\n", iop_base); |
14355 | iop_base); | ||
14356 | return -ENODEV; | 14252 | return -ENODEV; |
14357 | } | 14253 | } |
14358 | ASC_DBG1(1, "advansys_vlb_match: probing I/O port 0x%x\n", iop_base); | 14254 | ASC_DBG(1, "probing I/O port 0x%x\n", iop_base); |
14359 | if (!AscFindSignature(iop_base)) | 14255 | if (!AscFindSignature(iop_base)) |
14360 | goto release_region; | 14256 | goto release_region; |
14361 | /* | 14257 | /* |