aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/initio.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/initio.c')
-rw-r--r--drivers/scsi/initio.c85
1 files changed, 36 insertions, 49 deletions
diff --git a/drivers/scsi/initio.c b/drivers/scsi/initio.c
index f7ddc9f1ba41..2094d4811d61 100644
--- a/drivers/scsi/initio.c
+++ b/drivers/scsi/initio.c
@@ -223,7 +223,7 @@ static void tul_select_atn(HCS * pCurHcb, SCB * pCurScb);
223static void tul_select_atn3(HCS * pCurHcb, SCB * pCurScb); 223static void tul_select_atn3(HCS * pCurHcb, SCB * pCurScb);
224static void tul_select_atn_stop(HCS * pCurHcb, SCB * pCurScb); 224static void tul_select_atn_stop(HCS * pCurHcb, SCB * pCurScb);
225static int int_tul_busfree(HCS * pCurHcb); 225static int int_tul_busfree(HCS * pCurHcb);
226int int_tul_scsi_rst(HCS * pCurHcb); 226static int int_tul_scsi_rst(HCS * pCurHcb);
227static int int_tul_bad_seq(HCS * pCurHcb); 227static int int_tul_bad_seq(HCS * pCurHcb);
228static int int_tul_resel(HCS * pCurHcb); 228static int int_tul_resel(HCS * pCurHcb);
229static int tul_sync_done(HCS * pCurHcb); 229static int tul_sync_done(HCS * pCurHcb);
@@ -240,9 +240,8 @@ static int tul_se2_rd_all(WORD CurBase);
240static void tul_se2_update_all(WORD CurBase); /* setup default pattern */ 240static void tul_se2_update_all(WORD CurBase); /* setup default pattern */
241static void tul_read_eeprom(WORD CurBase); 241static void tul_read_eeprom(WORD CurBase);
242 242
243 /* ---- EXTERNAL VARIABLES ---- */
244HCS tul_hcs[MAX_SUPPORTED_ADAPTERS];
245 /* ---- INTERNAL VARIABLES ---- */ 243 /* ---- INTERNAL VARIABLES ---- */
244static HCS tul_hcs[MAX_SUPPORTED_ADAPTERS];
246static INI_ADPT_STRUCT i91u_adpt[MAX_SUPPORTED_ADAPTERS]; 245static INI_ADPT_STRUCT i91u_adpt[MAX_SUPPORTED_ADAPTERS];
247 246
248/*NVRAM nvram, *nvramp = &nvram; */ 247/*NVRAM nvram, *nvramp = &nvram; */
@@ -381,7 +380,7 @@ void tul_se2_wait(void)
381 380
382 381
383******************************************************************/ 382******************************************************************/
384void tul_se2_instr(WORD CurBase, UCHAR instr) 383static void tul_se2_instr(WORD CurBase, UCHAR instr)
385{ 384{
386 int i; 385 int i;
387 UCHAR b; 386 UCHAR b;
@@ -437,7 +436,7 @@ void tul_se2_ew_ds(WORD CurBase)
437 Input :address of Serial E2PROM 436 Input :address of Serial E2PROM
438 Output :value stored in Serial E2PROM 437 Output :value stored in Serial E2PROM
439*******************************************************************/ 438*******************************************************************/
440USHORT tul_se2_rd(WORD CurBase, ULONG adr) 439static USHORT tul_se2_rd(WORD CurBase, ULONG adr)
441{ 440{
442 UCHAR instr, readByte; 441 UCHAR instr, readByte;
443 USHORT readWord; 442 USHORT readWord;
@@ -468,7 +467,7 @@ USHORT tul_se2_rd(WORD CurBase, ULONG adr)
468/****************************************************************** 467/******************************************************************
469 Input: new value in Serial E2PROM, address of Serial E2PROM 468 Input: new value in Serial E2PROM, address of Serial E2PROM
470*******************************************************************/ 469*******************************************************************/
471void tul_se2_wr(WORD CurBase, UCHAR adr, USHORT writeWord) 470static void tul_se2_wr(WORD CurBase, UCHAR adr, USHORT writeWord)
472{ 471{
473 UCHAR readByte; 472 UCHAR readByte;
474 UCHAR instr; 473 UCHAR instr;
@@ -584,8 +583,8 @@ void tul_read_eeprom(WORD CurBase)
584 TUL_WR(CurBase + TUL_GCTRL, gctrl & ~TUL_GCTRL_EEPROM_BIT); 583 TUL_WR(CurBase + TUL_GCTRL, gctrl & ~TUL_GCTRL_EEPROM_BIT);
585} /* read_eeprom */ 584} /* read_eeprom */
586 585
587int Addi91u_into_Adapter_table(WORD wBIOS, WORD wBASE, BYTE bInterrupt, 586static int Addi91u_into_Adapter_table(WORD wBIOS, WORD wBASE, BYTE bInterrupt,
588 BYTE bBus, BYTE bDevice) 587 BYTE bBus, BYTE bDevice)
589{ 588{
590 int i, j; 589 int i, j;
591 590
@@ -616,7 +615,7 @@ int Addi91u_into_Adapter_table(WORD wBIOS, WORD wBASE, BYTE bInterrupt,
616 return 1; 615 return 1;
617} 616}
618 617
619void init_i91uAdapter_table(void) 618static void init_i91uAdapter_table(void)
620{ 619{
621 int i; 620 int i;
622 621
@@ -630,7 +629,7 @@ void init_i91uAdapter_table(void)
630 return; 629 return;
631} 630}
632 631
633void tul_stop_bm(HCS * pCurHcb) 632static void tul_stop_bm(HCS * pCurHcb)
634{ 633{
635 634
636 if (TUL_RD(pCurHcb->HCS_Base, TUL_XStatus) & XPEND) { /* if DMA xfer is pending, abort DMA xfer */ 635 if (TUL_RD(pCurHcb->HCS_Base, TUL_XStatus) & XPEND) { /* if DMA xfer is pending, abort DMA xfer */
@@ -642,7 +641,7 @@ void tul_stop_bm(HCS * pCurHcb)
642} 641}
643 642
644/***************************************************************************/ 643/***************************************************************************/
645void get_tulipPCIConfig(HCS * pCurHcb, int ch_idx) 644static void get_tulipPCIConfig(HCS * pCurHcb, int ch_idx)
646{ 645{
647 pCurHcb->HCS_Base = i91u_adpt[ch_idx].ADPT_BASE; /* Supply base address */ 646 pCurHcb->HCS_Base = i91u_adpt[ch_idx].ADPT_BASE; /* Supply base address */
648 pCurHcb->HCS_BIOS = i91u_adpt[ch_idx].ADPT_BIOS; /* Supply BIOS address */ 647 pCurHcb->HCS_BIOS = i91u_adpt[ch_idx].ADPT_BIOS; /* Supply BIOS address */
@@ -651,7 +650,7 @@ void get_tulipPCIConfig(HCS * pCurHcb, int ch_idx)
651} 650}
652 651
653/***************************************************************************/ 652/***************************************************************************/
654int tul_reset_scsi(HCS * pCurHcb, int seconds) 653static int tul_reset_scsi(HCS * pCurHcb, int seconds)
655{ 654{
656 TUL_WR(pCurHcb->HCS_Base + TUL_SCtrl0, TSC_RST_BUS); 655 TUL_WR(pCurHcb->HCS_Base + TUL_SCtrl0, TSC_RST_BUS);
657 656
@@ -670,7 +669,8 @@ int tul_reset_scsi(HCS * pCurHcb, int seconds)
670} 669}
671 670
672/***************************************************************************/ 671/***************************************************************************/
673int init_tulip(HCS * pCurHcb, SCB * scbp, int tul_num_scb, BYTE * pbBiosAdr, int seconds) 672static int init_tulip(HCS * pCurHcb, SCB * scbp, int tul_num_scb,
673 BYTE * pbBiosAdr, int seconds)
674{ 674{
675 int i; 675 int i;
676 BYTE *pwFlags; 676 BYTE *pwFlags;
@@ -788,7 +788,7 @@ int init_tulip(HCS * pCurHcb, SCB * scbp, int tul_num_scb, BYTE * pbBiosAdr, int
788} 788}
789 789
790/***************************************************************************/ 790/***************************************************************************/
791SCB *tul_alloc_scb(HCS * hcsp) 791static SCB *tul_alloc_scb(HCS * hcsp)
792{ 792{
793 SCB *pTmpScb; 793 SCB *pTmpScb;
794 ULONG flags; 794 ULONG flags;
@@ -807,7 +807,7 @@ SCB *tul_alloc_scb(HCS * hcsp)
807} 807}
808 808
809/***************************************************************************/ 809/***************************************************************************/
810void tul_release_scb(HCS * hcsp, SCB * scbp) 810static void tul_release_scb(HCS * hcsp, SCB * scbp)
811{ 811{
812 ULONG flags; 812 ULONG flags;
813 813
@@ -829,7 +829,7 @@ void tul_release_scb(HCS * hcsp, SCB * scbp)
829} 829}
830 830
831/***************************************************************************/ 831/***************************************************************************/
832void tul_append_pend_scb(HCS * pCurHcb, SCB * scbp) 832static void tul_append_pend_scb(HCS * pCurHcb, SCB * scbp)
833{ 833{
834 834
835#if DEBUG_QUEUE 835#if DEBUG_QUEUE
@@ -847,7 +847,7 @@ void tul_append_pend_scb(HCS * pCurHcb, SCB * scbp)
847} 847}
848 848
849/***************************************************************************/ 849/***************************************************************************/
850void tul_push_pend_scb(HCS * pCurHcb, SCB * scbp) 850static void tul_push_pend_scb(HCS * pCurHcb, SCB * scbp)
851{ 851{
852 852
853#if DEBUG_QUEUE 853#if DEBUG_QUEUE
@@ -863,7 +863,7 @@ void tul_push_pend_scb(HCS * pCurHcb, SCB * scbp)
863} 863}
864 864
865/***************************************************************************/ 865/***************************************************************************/
866SCB *tul_find_first_pend_scb(HCS * pCurHcb) 866static SCB *tul_find_first_pend_scb(HCS * pCurHcb)
867{ 867{
868 SCB *pFirstPend; 868 SCB *pFirstPend;
869 869
@@ -894,24 +894,7 @@ SCB *tul_find_first_pend_scb(HCS * pCurHcb)
894 return (pFirstPend); 894 return (pFirstPend);
895} 895}
896/***************************************************************************/ 896/***************************************************************************/
897SCB *tul_pop_pend_scb(HCS * pCurHcb) 897static void tul_unlink_pend_scb(HCS * pCurHcb, SCB * pCurScb)
898{
899 SCB *pTmpScb;
900
901 if ((pTmpScb = pCurHcb->HCS_FirstPend) != NULL) {
902 if ((pCurHcb->HCS_FirstPend = pTmpScb->SCB_NxtScb) == NULL)
903 pCurHcb->HCS_LastPend = NULL;
904 pTmpScb->SCB_NxtScb = NULL;
905 }
906#if DEBUG_QUEUE
907 printk("Pop pend SCB %lx; ", (ULONG) pTmpScb);
908#endif
909 return (pTmpScb);
910}
911
912
913/***************************************************************************/
914void tul_unlink_pend_scb(HCS * pCurHcb, SCB * pCurScb)
915{ 898{
916 SCB *pTmpScb, *pPrevScb; 899 SCB *pTmpScb, *pPrevScb;
917 900
@@ -939,7 +922,7 @@ void tul_unlink_pend_scb(HCS * pCurHcb, SCB * pCurScb)
939 return; 922 return;
940} 923}
941/***************************************************************************/ 924/***************************************************************************/
942void tul_append_busy_scb(HCS * pCurHcb, SCB * scbp) 925static void tul_append_busy_scb(HCS * pCurHcb, SCB * scbp)
943{ 926{
944 927
945#if DEBUG_QUEUE 928#if DEBUG_QUEUE
@@ -961,7 +944,7 @@ void tul_append_busy_scb(HCS * pCurHcb, SCB * scbp)
961} 944}
962 945
963/***************************************************************************/ 946/***************************************************************************/
964SCB *tul_pop_busy_scb(HCS * pCurHcb) 947static SCB *tul_pop_busy_scb(HCS * pCurHcb)
965{ 948{
966 SCB *pTmpScb; 949 SCB *pTmpScb;
967 950
@@ -982,7 +965,7 @@ SCB *tul_pop_busy_scb(HCS * pCurHcb)
982} 965}
983 966
984/***************************************************************************/ 967/***************************************************************************/
985void tul_unlink_busy_scb(HCS * pCurHcb, SCB * pCurScb) 968static void tul_unlink_busy_scb(HCS * pCurHcb, SCB * pCurScb)
986{ 969{
987 SCB *pTmpScb, *pPrevScb; 970 SCB *pTmpScb, *pPrevScb;
988 971
@@ -1037,7 +1020,7 @@ SCB *tul_find_busy_scb(HCS * pCurHcb, WORD tarlun)
1037} 1020}
1038 1021
1039/***************************************************************************/ 1022/***************************************************************************/
1040void tul_append_done_scb(HCS * pCurHcb, SCB * scbp) 1023static void tul_append_done_scb(HCS * pCurHcb, SCB * scbp)
1041{ 1024{
1042 1025
1043#if DEBUG_QUEUE 1026#if DEBUG_QUEUE
@@ -1073,7 +1056,7 @@ SCB *tul_find_done_scb(HCS * pCurHcb)
1073} 1056}
1074 1057
1075/***************************************************************************/ 1058/***************************************************************************/
1076int tul_abort_srb(HCS * pCurHcb, struct scsi_cmnd *srbp) 1059static int tul_abort_srb(HCS * pCurHcb, struct scsi_cmnd *srbp)
1077{ 1060{
1078 ULONG flags; 1061 ULONG flags;
1079 SCB *pTmpScb, *pPrevScb; 1062 SCB *pTmpScb, *pPrevScb;
@@ -1163,7 +1146,7 @@ int tul_abort_srb(HCS * pCurHcb, struct scsi_cmnd *srbp)
1163} 1146}
1164 1147
1165/***************************************************************************/ 1148/***************************************************************************/
1166int tul_bad_seq(HCS * pCurHcb) 1149static int tul_bad_seq(HCS * pCurHcb)
1167{ 1150{
1168 SCB *pCurScb; 1151 SCB *pCurScb;
1169 1152
@@ -1182,9 +1165,11 @@ int tul_bad_seq(HCS * pCurHcb)
1182 return (tul_post_scsi_rst(pCurHcb)); 1165 return (tul_post_scsi_rst(pCurHcb));
1183} 1166}
1184 1167
1168#if 0
1169
1185/************************************************************************/ 1170/************************************************************************/
1186int tul_device_reset(HCS * pCurHcb, struct scsi_cmnd *pSrb, 1171static int tul_device_reset(HCS * pCurHcb, struct scsi_cmnd *pSrb,
1187 unsigned int target, unsigned int ResetFlags) 1172 unsigned int target, unsigned int ResetFlags)
1188{ 1173{
1189 ULONG flags; 1174 ULONG flags;
1190 SCB *pScb; 1175 SCB *pScb;
@@ -1255,7 +1240,7 @@ int tul_device_reset(HCS * pCurHcb, struct scsi_cmnd *pSrb,
1255 return SCSI_RESET_PENDING; 1240 return SCSI_RESET_PENDING;
1256} 1241}
1257 1242
1258int tul_reset_scsi_bus(HCS * pCurHcb) 1243static int tul_reset_scsi_bus(HCS * pCurHcb)
1259{ 1244{
1260 ULONG flags; 1245 ULONG flags;
1261 1246
@@ -1284,8 +1269,10 @@ int tul_reset_scsi_bus(HCS * pCurHcb)
1284 return (SCSI_RESET_SUCCESS | SCSI_RESET_HOST_RESET); 1269 return (SCSI_RESET_SUCCESS | SCSI_RESET_HOST_RESET);
1285} 1270}
1286 1271
1272#endif /* 0 */
1273
1287/************************************************************************/ 1274/************************************************************************/
1288void tul_exec_scb(HCS * pCurHcb, SCB * pCurScb) 1275static void tul_exec_scb(HCS * pCurHcb, SCB * pCurScb)
1289{ 1276{
1290 ULONG flags; 1277 ULONG flags;
1291 1278
@@ -1318,7 +1305,7 @@ void tul_exec_scb(HCS * pCurHcb, SCB * pCurScb)
1318} 1305}
1319 1306
1320/***************************************************************************/ 1307/***************************************************************************/
1321int tul_isr(HCS * pCurHcb) 1308static int tul_isr(HCS * pCurHcb)
1322{ 1309{
1323 /* Enter critical section */ 1310 /* Enter critical section */
1324 1311
@@ -2108,7 +2095,7 @@ int int_tul_busfree(HCS * pCurHcb)
2108 2095
2109/***************************************************************************/ 2096/***************************************************************************/
2110/* scsi bus reset */ 2097/* scsi bus reset */
2111int int_tul_scsi_rst(HCS * pCurHcb) 2098static int int_tul_scsi_rst(HCS * pCurHcb)
2112{ 2099{
2113 SCB *pCurScb; 2100 SCB *pCurScb;
2114 int i; 2101 int i;
@@ -2214,7 +2201,7 @@ int int_tul_resel(HCS * pCurHcb)
2214 2201
2215 2202
2216/***************************************************************************/ 2203/***************************************************************************/
2217int int_tul_bad_seq(HCS * pCurHcb) 2204static int int_tul_bad_seq(HCS * pCurHcb)
2218{ /* target wrong phase */ 2205{ /* target wrong phase */
2219 SCB *pCurScb; 2206 SCB *pCurScb;
2220 int i; 2207 int i;