diff options
author | Matthew Wilcox <matthew@wil.cx> | 2007-07-26 11:57:06 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-10-12 14:39:45 -0400 |
commit | 895d6b4ca88ecc69b9301675eb220c6a926d8bb1 (patch) | |
tree | 2aab4991152ccf8dcdc1ccfedf5fafb202599b49 /drivers | |
parent | 394dbf3f4005622fa52f1805eb950f08ce20f636 (diff) |
[SCSI] advansys: Remove library-style callback routines
Convert adv_isr_callback, adv_async_callback and asc_isr_callback into
direct calls. Remove the unused asc_exe_callback.
Signed-off-by: Matthew Wilcox <matthew@wil.cx>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/advansys.c | 50 |
1 files changed, 8 insertions, 42 deletions
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index 73d974a15fca..310b92678035 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c | |||
@@ -1404,17 +1404,12 @@ typedef struct asc_dvc_cfg { | |||
1404 | 1404 | ||
1405 | struct asc_dvc_var; /* Forward Declaration. */ | 1405 | struct asc_dvc_var; /* Forward Declaration. */ |
1406 | 1406 | ||
1407 | typedef void (*ASC_ISR_CALLBACK) (struct asc_dvc_var *, ASC_QDONE_INFO *); | ||
1408 | typedef int (*ASC_EXE_CALLBACK) (struct asc_dvc_var *, ASC_SCSI_Q *); | ||
1409 | |||
1410 | typedef struct asc_dvc_var { | 1407 | typedef struct asc_dvc_var { |
1411 | PortAddr iop_base; | 1408 | PortAddr iop_base; |
1412 | ushort err_code; | 1409 | ushort err_code; |
1413 | ushort dvc_cntl; | 1410 | ushort dvc_cntl; |
1414 | ushort bug_fix_cntl; | 1411 | ushort bug_fix_cntl; |
1415 | ushort bus_type; | 1412 | ushort bus_type; |
1416 | ASC_ISR_CALLBACK isr_callback; | ||
1417 | ASC_EXE_CALLBACK exe_callback; | ||
1418 | ASC_SCSI_BIT_ID_TYPE init_sdtr; | 1413 | ASC_SCSI_BIT_ID_TYPE init_sdtr; |
1419 | ASC_SCSI_BIT_ID_TYPE sdtr_done; | 1414 | ASC_SCSI_BIT_ID_TYPE sdtr_done; |
1420 | ASC_SCSI_BIT_ID_TYPE use_tagged_qng; | 1415 | ASC_SCSI_BIT_ID_TYPE use_tagged_qng; |
@@ -2830,12 +2825,6 @@ typedef struct adv_dvc_cfg { | |||
2830 | struct adv_dvc_var; | 2825 | struct adv_dvc_var; |
2831 | struct adv_scsi_req_q; | 2826 | struct adv_scsi_req_q; |
2832 | 2827 | ||
2833 | typedef void (*ADV_ISR_CALLBACK) | ||
2834 | (struct adv_dvc_var *, struct adv_scsi_req_q *); | ||
2835 | |||
2836 | typedef void (*ADV_ASYNC_CALLBACK) | ||
2837 | (struct adv_dvc_var *, uchar); | ||
2838 | |||
2839 | /* | 2828 | /* |
2840 | * Adapter operation variable structure. | 2829 | * Adapter operation variable structure. |
2841 | * | 2830 | * |
@@ -2852,8 +2841,6 @@ typedef struct adv_dvc_var { | |||
2852 | AdvPortAddr iop_base; /* I/O port address */ | 2841 | AdvPortAddr iop_base; /* I/O port address */ |
2853 | ushort err_code; /* fatal error code */ | 2842 | ushort err_code; /* fatal error code */ |
2854 | ushort bios_ctrl; /* BIOS control word, EEPROM word 12 */ | 2843 | ushort bios_ctrl; /* BIOS control word, EEPROM word 12 */ |
2855 | ADV_ISR_CALLBACK isr_callback; | ||
2856 | ADV_ASYNC_CALLBACK async_callback; | ||
2857 | ushort wdtr_able; /* try WDTR for a device */ | 2844 | ushort wdtr_able; /* try WDTR for a device */ |
2858 | ushort sdtr_able; /* try SDTR for a device */ | 2845 | ushort sdtr_able; /* try SDTR for a device */ |
2859 | ushort ultra_able; /* try SDTR Ultra speed for a device */ | 2846 | ushort ultra_able; /* try SDTR Ultra speed for a device */ |
@@ -3671,9 +3658,6 @@ static int asc_execute_scsi_cmnd(struct scsi_cmnd *); | |||
3671 | static int asc_build_req(asc_board_t *, struct scsi_cmnd *); | 3658 | static int asc_build_req(asc_board_t *, struct scsi_cmnd *); |
3672 | static int adv_build_req(asc_board_t *, struct scsi_cmnd *, ADV_SCSI_REQ_Q **); | 3659 | static int adv_build_req(asc_board_t *, struct scsi_cmnd *, ADV_SCSI_REQ_Q **); |
3673 | static int adv_get_sglist(asc_board_t *, adv_req_t *, struct scsi_cmnd *, int); | 3660 | static int adv_get_sglist(asc_board_t *, adv_req_t *, struct scsi_cmnd *, int); |
3674 | static void asc_isr_callback(ASC_DVC_VAR *, ASC_QDONE_INFO *); | ||
3675 | static void adv_isr_callback(ADV_DVC_VAR *, ADV_SCSI_REQ_Q *); | ||
3676 | static void adv_async_callback(ADV_DVC_VAR *, uchar); | ||
3677 | static void asc_enqueue(asc_queue_t *, REQP, int); | 3661 | static void asc_enqueue(asc_queue_t *, REQP, int); |
3678 | static REQP asc_dequeue(asc_queue_t *, int); | 3662 | static REQP asc_dequeue(asc_queue_t *, int); |
3679 | static REQP asc_dequeue_list(asc_queue_t *, REQP *, int); | 3663 | static REQP asc_dequeue_list(asc_queue_t *, REQP *, int); |
@@ -7624,9 +7608,8 @@ static void asc_prt_asc_dvc_var(ASC_DVC_VAR *h) | |||
7624 | printk(" iop_base 0x%x, err_code 0x%x, dvc_cntl 0x%x, bug_fix_cntl " | 7608 | printk(" iop_base 0x%x, err_code 0x%x, dvc_cntl 0x%x, bug_fix_cntl " |
7625 | "%d,\n", h->iop_base, h->err_code, h->dvc_cntl, h->bug_fix_cntl); | 7609 | "%d,\n", h->iop_base, h->err_code, h->dvc_cntl, h->bug_fix_cntl); |
7626 | 7610 | ||
7627 | printk(" bus_type %d, isr_callback 0x%p, exe_callback 0x%p, " | 7611 | printk(" bus_type %d, init_sdtr 0x%x,\n", h->bus_type, |
7628 | "init_sdtr 0x%x,\n", h->bus_type, h->isr_callback, | 7612 | (unsigned)h->init_sdtr); |
7629 | h->exe_callback, (unsigned)h->init_sdtr); | ||
7630 | 7613 | ||
7631 | printk(" sdtr_done 0x%x, use_tagged_qng 0x%x, unit_not_ready 0x%x, " | 7614 | printk(" sdtr_done 0x%x, use_tagged_qng 0x%x, unit_not_ready 0x%x, " |
7632 | "chip_no 0x%x,\n", (unsigned)h->sdtr_done, | 7615 | "chip_no 0x%x,\n", (unsigned)h->sdtr_done, |
@@ -8631,10 +8614,8 @@ static int AscIsrQDone(ASC_DVC_VAR *asc_dvc) | |||
8631 | ASC_QDONE_INFO scsiq_buf; | 8614 | ASC_QDONE_INFO scsiq_buf; |
8632 | ASC_QDONE_INFO *scsiq; | 8615 | ASC_QDONE_INFO *scsiq; |
8633 | int false_overrun; | 8616 | int false_overrun; |
8634 | ASC_ISR_CALLBACK asc_isr_callback; | ||
8635 | 8617 | ||
8636 | iop_base = asc_dvc->iop_base; | 8618 | iop_base = asc_dvc->iop_base; |
8637 | asc_isr_callback = asc_dvc->isr_callback; | ||
8638 | n_q_used = 1; | 8619 | n_q_used = 1; |
8639 | scsiq = (ASC_QDONE_INFO *)&scsiq_buf; | 8620 | scsiq = (ASC_QDONE_INFO *)&scsiq_buf; |
8640 | done_q_tail = (uchar)AscGetVarDoneQTail(iop_base); | 8621 | done_q_tail = (uchar)AscGetVarDoneQTail(iop_base); |
@@ -8746,7 +8727,7 @@ static int AscIsrQDone(ASC_DVC_VAR *asc_dvc) | |||
8746 | } | 8727 | } |
8747 | } | 8728 | } |
8748 | if ((scsiq->cntl & QC_NO_CALLBACK) == 0) { | 8729 | if ((scsiq->cntl & QC_NO_CALLBACK) == 0) { |
8749 | (*asc_isr_callback) (asc_dvc, scsiq); | 8730 | asc_isr_callback(asc_dvc, scsiq); |
8750 | } else { | 8731 | } else { |
8751 | if ((AscReadLramByte(iop_base, | 8732 | if ((AscReadLramByte(iop_base, |
8752 | (ushort)(q_addr + (ushort) | 8733 | (ushort)(q_addr + (ushort) |
@@ -8764,7 +8745,7 @@ static int AscIsrQDone(ASC_DVC_VAR *asc_dvc) | |||
8764 | AscSetLibErrorCode(asc_dvc, ASCQ_ERR_Q_STATUS); | 8745 | AscSetLibErrorCode(asc_dvc, ASCQ_ERR_Q_STATUS); |
8765 | FATAL_ERR_QDONE: | 8746 | FATAL_ERR_QDONE: |
8766 | if ((scsiq->cntl & QC_NO_CALLBACK) == 0) { | 8747 | if ((scsiq->cntl & QC_NO_CALLBACK) == 0) { |
8767 | (*asc_isr_callback) (asc_dvc, scsiq); | 8748 | asc_isr_callback(asc_dvc, scsiq); |
8768 | } | 8749 | } |
8769 | return (0x80); | 8750 | return (0x80); |
8770 | } | 8751 | } |
@@ -8790,9 +8771,7 @@ static int AscISR(ASC_DVC_VAR *asc_dvc) | |||
8790 | return int_pending; | 8771 | return int_pending; |
8791 | } | 8772 | } |
8792 | 8773 | ||
8793 | if (((asc_dvc->init_state & ASC_INIT_STATE_END_LOAD_MC) == 0) | 8774 | if ((asc_dvc->init_state & ASC_INIT_STATE_END_LOAD_MC) == 0) { |
8794 | || (asc_dvc->isr_callback == 0) | ||
8795 | ) { | ||
8796 | return (ERR); | 8775 | return (ERR); |
8797 | } | 8776 | } |
8798 | if (asc_dvc->in_critical_cnt != 0) { | 8777 | if (asc_dvc->in_critical_cnt != 0) { |
@@ -9191,7 +9170,6 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq) | |||
9191 | int disable_syn_offset_one_fix; | 9170 | int disable_syn_offset_one_fix; |
9192 | int i; | 9171 | int i; |
9193 | ASC_PADDR addr; | 9172 | ASC_PADDR addr; |
9194 | ASC_EXE_CALLBACK asc_exe_callback; | ||
9195 | ushort sg_entry_cnt = 0; | 9173 | ushort sg_entry_cnt = 0; |
9196 | ushort sg_entry_cnt_minus_one = 0; | 9174 | ushort sg_entry_cnt_minus_one = 0; |
9197 | uchar target_ix; | 9175 | uchar target_ix; |
@@ -9205,7 +9183,6 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq) | |||
9205 | 9183 | ||
9206 | iop_base = asc_dvc->iop_base; | 9184 | iop_base = asc_dvc->iop_base; |
9207 | sg_head = scsiq->sg_head; | 9185 | sg_head = scsiq->sg_head; |
9208 | asc_exe_callback = asc_dvc->exe_callback; | ||
9209 | if (asc_dvc->err_code != 0) | 9186 | if (asc_dvc->err_code != 0) |
9210 | return (ERR); | 9187 | return (ERR); |
9211 | if (scsiq == (ASC_SCSI_Q *)0L) { | 9188 | if (scsiq == (ASC_SCSI_Q *)0L) { |
@@ -9366,9 +9343,6 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq) | |||
9366 | AscSendScsiQueue(asc_dvc, scsiq, | 9343 | AscSendScsiQueue(asc_dvc, scsiq, |
9367 | n_q_required)) == 1) { | 9344 | n_q_required)) == 1) { |
9368 | asc_dvc->in_critical_cnt--; | 9345 | asc_dvc->in_critical_cnt--; |
9369 | if (asc_exe_callback != 0) { | ||
9370 | (*asc_exe_callback) (asc_dvc, scsiq); | ||
9371 | } | ||
9372 | DvcLeaveCritical(last_int_level); | 9346 | DvcLeaveCritical(last_int_level); |
9373 | return (sta); | 9347 | return (sta); |
9374 | } | 9348 | } |
@@ -9414,9 +9388,6 @@ static int AscExeScsiQueue(ASC_DVC_VAR *asc_dvc, ASC_SCSI_Q *scsiq) | |||
9414 | if ((sta = AscSendScsiQueue(asc_dvc, scsiq, | 9388 | if ((sta = AscSendScsiQueue(asc_dvc, scsiq, |
9415 | n_q_required)) == 1) { | 9389 | n_q_required)) == 1) { |
9416 | asc_dvc->in_critical_cnt--; | 9390 | asc_dvc->in_critical_cnt--; |
9417 | if (asc_exe_callback != 0) { | ||
9418 | (*asc_exe_callback) (asc_dvc, scsiq); | ||
9419 | } | ||
9420 | DvcLeaveCritical(last_int_level); | 9391 | DvcLeaveCritical(last_int_level); |
9421 | return (sta); | 9392 | return (sta); |
9422 | } | 9393 | } |
@@ -16745,7 +16716,7 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc) | |||
16745 | 16716 | ||
16746 | /* | 16717 | /* |
16747 | * Notify the driver of an asynchronous microcode condition by | 16718 | * Notify the driver of an asynchronous microcode condition by |
16748 | * calling the ADV_DVC_VAR.async_callback function. The function | 16719 | * calling the adv_async_callback function. The function |
16749 | * is passed the microcode ASC_MC_INTRB_CODE byte value. | 16720 | * is passed the microcode ASC_MC_INTRB_CODE byte value. |
16750 | */ | 16721 | */ |
16751 | if (int_stat & ADV_INTR_STATUS_INTRB) { | 16722 | if (int_stat & ADV_INTR_STATUS_INTRB) { |
@@ -16767,9 +16738,7 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc) | |||
16767 | } | 16738 | } |
16768 | } | 16739 | } |
16769 | 16740 | ||
16770 | if (asc_dvc->async_callback != 0) { | 16741 | adv_async_callback(asc_dvc, intrb_code); |
16771 | (*asc_dvc->async_callback) (asc_dvc, intrb_code); | ||
16772 | } | ||
16773 | } | 16742 | } |
16774 | 16743 | ||
16775 | /* | 16744 | /* |
@@ -16827,7 +16796,7 @@ static int AdvISR(ADV_DVC_VAR *asc_dvc) | |||
16827 | * the ADV_SCSI_REQ_Q pointer to its callback function. | 16796 | * the ADV_SCSI_REQ_Q pointer to its callback function. |
16828 | */ | 16797 | */ |
16829 | scsiq->a_flag |= ADV_SCSIQ_DONE; | 16798 | scsiq->a_flag |= ADV_SCSIQ_DONE; |
16830 | (*asc_dvc->isr_callback) (asc_dvc, scsiq); | 16799 | adv_isr_callback(asc_dvc, scsiq); |
16831 | /* | 16800 | /* |
16832 | * Note: After the driver callback function is called, 'scsiq' | 16801 | * Note: After the driver callback function is called, 'scsiq' |
16833 | * can no longer be referenced. | 16802 | * can no longer be referenced. |
@@ -17097,15 +17066,12 @@ advansys_board_found(int iop, struct device *dev, int bus_type) | |||
17097 | asc_dvc_varp->cfg = &boardp->dvc_cfg.asc_dvc_cfg; | 17066 | asc_dvc_varp->cfg = &boardp->dvc_cfg.asc_dvc_cfg; |
17098 | asc_dvc_varp->cfg->overrun_buf = &overrun_buf[0]; | 17067 | asc_dvc_varp->cfg->overrun_buf = &overrun_buf[0]; |
17099 | asc_dvc_varp->iop_base = iop; | 17068 | asc_dvc_varp->iop_base = iop; |
17100 | asc_dvc_varp->isr_callback = asc_isr_callback; | ||
17101 | } else { | 17069 | } else { |
17102 | #ifdef CONFIG_PCI | 17070 | #ifdef CONFIG_PCI |
17103 | ASC_DBG(1, "advansys_board_found: wide board\n"); | 17071 | ASC_DBG(1, "advansys_board_found: wide board\n"); |
17104 | adv_dvc_varp = &boardp->dvc_var.adv_dvc_var; | 17072 | adv_dvc_varp = &boardp->dvc_var.adv_dvc_var; |
17105 | adv_dvc_varp->drv_ptr = boardp; | 17073 | adv_dvc_varp->drv_ptr = boardp; |
17106 | adv_dvc_varp->cfg = &boardp->dvc_cfg.adv_dvc_cfg; | 17074 | adv_dvc_varp->cfg = &boardp->dvc_cfg.adv_dvc_cfg; |
17107 | adv_dvc_varp->isr_callback = adv_isr_callback; | ||
17108 | adv_dvc_varp->async_callback = adv_async_callback; | ||
17109 | if (pdev->device == PCI_DEVICE_ID_ASP_ABP940UW) { | 17075 | if (pdev->device == PCI_DEVICE_ID_ASP_ABP940UW) { |
17110 | ASC_DBG(1, "advansys_board_found: ASC-3550\n"); | 17076 | ASC_DBG(1, "advansys_board_found: ASC-3550\n"); |
17111 | adv_dvc_varp->chip_type = ADV_CHIP_ASC3550; | 17077 | adv_dvc_varp->chip_type = ADV_CHIP_ASC3550; |