--- Gnu-Mach/linux/src/drivers/scsi/advansys.c 2020/09/02 04:41:40 1.1 +++ Gnu-Mach/linux/src/drivers/scsi/advansys.c 2020/09/02 04:46:32 1.1.1.2 @@ -1,4 +1,4 @@ -/* $Id: advansys.c,v 1.1 2020/09/02 04:41:40 root Exp $ */ +/* $Id: advansys.c,v 1.1.1.2 2020/09/02 04:46:32 root Exp $ */ #define ASC_VERSION "3.1E" /* AdvanSys Driver Version */ /* @@ -2033,8 +2033,8 @@ STATIC void AscSetISAPNPWaitForKey( STATIC uchar AscGetChipIRQ(PortAddr, ushort); STATIC uchar AscSetChipIRQ(PortAddr, uchar, ushort); STATIC ushort AscGetChipBiosAddress(PortAddr, ushort); -STATIC int DvcEnterCritical(void); -STATIC void DvcLeaveCritical(int); +STATIC long DvcEnterCritical(void); +STATIC void DvcLeaveCritical(long); STATIC void DvcInPortWords(PortAddr, ushort *, int); STATIC void DvcOutPortWords(PortAddr, ushort *, int); STATIC void DvcOutPortDWords(PortAddr, ulong *, int); @@ -2870,8 +2870,8 @@ typedef struct adv_scsi_req_q { /* * Device drivers must define the following functions. */ -STATIC int DvcEnterCritical(void); -STATIC void DvcLeaveCritical(int); +STATIC long DvcEnterCritical(void); +STATIC void DvcLeaveCritical(long); STATIC void DvcSleepMilliSecond(ulong); STATIC uchar DvcAdvReadPCIConfigByte(ADV_DVC_VAR *, ushort); STATIC void DvcAdvWritePCIConfigByte(ADV_DVC_VAR *, ushort, uchar); @@ -3136,7 +3136,7 @@ typedef int (* ADV_SBRESET_CALLBACK) /* * Default EEPROM Configuration structure defined in a_init.c. */ -extern ADVEEP_CONFIG Default_EEPROM_Config; +STATIC ADVEEP_CONFIG Default_EEPROM_Config; /* * DvcGetPhyAddr() flag arguments @@ -3256,7 +3256,7 @@ Forced Error: Driver must define ADV_MAX * REQTIMESTAMP() - system time stamp value */ typedef Scsi_Cmnd REQ, *REQP; -#define REQPNEXT(reqp) ((REQP) ((reqp)->host_scribble)) +#define REQPNEXT(reqp) ((reqp)->host_scribble) #define REQPNEXTP(reqp) ((REQP *) &((reqp)->host_scribble)) #define REQPTID(reqp) ((reqp)->target) #define REQPTIME(reqp) ((reqp)->SCp.this_residual) @@ -5400,7 +5400,7 @@ advansys_queuecommand(Scsi_Cmnd *scp, vo { struct Scsi_Host *shp; asc_board_t *boardp; - int flags; + long flags; Scsi_Cmnd *done_scp; shp = scp->host; @@ -5495,7 +5495,7 @@ advansys_abort(Scsi_Cmnd *scp) asc_board_t *boardp; ASC_DVC_VAR *asc_dvc_varp; ADV_DVC_VAR *adv_dvc_varp; - int flags; + long flags; int do_scsi_done; int scp_found; Scsi_Cmnd *done_scp = NULL; @@ -5734,7 +5734,7 @@ advansys_reset(Scsi_Cmnd *scp, unsigned asc_board_t *boardp; ASC_DVC_VAR *asc_dvc_varp; ADV_DVC_VAR *adv_dvc_varp; - int flags; + long flags; Scsi_Cmnd *done_scp = NULL, *last_scp = NULL; Scsi_Cmnd *tscp, *new_last_scp; int do_scsi_done; @@ -6015,16 +6015,19 @@ advansys_reset(Scsi_Cmnd *scp, unsigned */ if (done_scp == NULL) { done_scp = asc_dequeue_list(&boardp->active, &last_scp, target); - for (tscp = done_scp; tscp; tscp = REQPNEXT(tscp)) { + for (tscp = done_scp; tscp; tscp = (REQP) REQPNEXT(tscp)) { tscp->result = HOST_BYTE(DID_RESET); } } else { ASC_ASSERT(last_scp != NULL); - REQPNEXT(last_scp) = asc_dequeue_list(&boardp->active, - &new_last_scp, target); - if (new_last_scp != NULL) { - ASC_ASSERT(REQPNEXT(last_scp) != NULL); - for (tscp = REQPNEXT(last_scp); tscp; tscp = REQPNEXT(tscp)) { + REQPNEXT(last_scp) = + (unsigned char *) asc_dequeue_list(&boardp->active, + &new_last_scp, target); + if (new_last_scp != (Scsi_Cmnd *) NULL) { + ASC_ASSERT((REQP) REQPNEXT(last_scp) != NULL); + for (tscp = (Scsi_Cmnd *) REQPNEXT(last_scp); + tscp; + tscp = (Scsi_Cmnd *) REQPNEXT(tscp)) { tscp->result = HOST_BYTE(DID_RESET); } last_scp = new_last_scp; @@ -6037,16 +6040,19 @@ advansys_reset(Scsi_Cmnd *scp, unsigned */ if (done_scp == NULL) { done_scp = asc_dequeue_list(&boardp->waiting, &last_scp, target); - for (tscp = done_scp; tscp; tscp = REQPNEXT(tscp)) { + for (tscp = done_scp; tscp; tscp = (REQP) REQPNEXT(tscp)) { tscp->result = HOST_BYTE(DID_RESET); } } else { ASC_ASSERT(last_scp != NULL); - REQPNEXT(last_scp) = asc_dequeue_list(&boardp->waiting, - &new_last_scp, target); + REQPNEXT(last_scp) = + (unsigned char *) asc_dequeue_list(&boardp->waiting, + &new_last_scp, target); if (new_last_scp != NULL) { - ASC_ASSERT(REQPNEXT(last_scp) != NULL); - for (tscp = REQPNEXT(last_scp); tscp; tscp = REQPNEXT(tscp)) { + ASC_ASSERT((REQP) REQPNEXT(last_scp) != NULL); + for (tscp = (REQP) REQPNEXT(last_scp); + tscp; + tscp = (REQP) REQPNEXT(tscp)) { tscp->result = HOST_BYTE(DID_RESET); } last_scp = new_last_scp; @@ -6263,7 +6269,7 @@ advansys_interrupt(int irq, void *dev_id #endif /* version >= v1.3.70 */ { #if LINUX_VERSION_CODE < ASC_LINUX_VERSION(2,1,95) - int flags; + long flags; #else /* version >= v2.1.95 */ unsigned long flags; #endif /* version >= v2.1.95 */ @@ -6342,8 +6348,10 @@ advansys_interrupt(int irq, void *dev_id ASC_TID_ALL); } else { ASC_ASSERT(last_scp != NULL); - REQPNEXT(last_scp) = asc_dequeue_list(&boardp->done, - &new_last_scp, ASC_TID_ALL); + REQPNEXT(last_scp) = + (unsigned char *) asc_dequeue_list(&boardp->done, + &new_last_scp, + ASC_TID_ALL); if (new_last_scp != NULL) { ASC_ASSERT(REQPNEXT(last_scp) != NULL); last_scp = new_last_scp; @@ -6441,7 +6449,7 @@ asc_scsi_done_list(Scsi_Cmnd *scp) ASC_DBG(2, "asc_scsi_done_list: begin\n"); while (scp != NULL) { ASC_DBG1(3, "asc_scsi_done_list: scp %x\n", (unsigned) scp); - tscp = REQPNEXT(scp); + tscp = (REQP) REQPNEXT(scp); REQPNEXT(scp) = NULL; ASC_STATS(scp->host, done); ASC_ASSERT(scp->scsi_done != NULL); @@ -7874,7 +7882,7 @@ asc_enqueue(asc_queue_t *ascq, REQP reqp tid = REQPTID(reqp); ASC_ASSERT(tid >= 0 && tid <= ADV_MAX_TID); if (flag == ASC_FRONT) { - REQPNEXT(reqp) = ascq->q_first[tid]; + REQPNEXT(reqp) = (unsigned char *) ascq->q_first[tid]; ascq->q_first[tid] = reqp; /* If the queue was empty, set the last pointer. */ if (ascq->q_last[tid] == NULL) { @@ -7882,7 +7890,7 @@ asc_enqueue(asc_queue_t *ascq, REQP reqp } } else { /* ASC_BACK */ if (ascq->q_last[tid] != NULL) { - REQPNEXT(ascq->q_last[tid]) = reqp; + REQPNEXT(ascq->q_last[tid]) = (unsigned char *) reqp; } ascq->q_last[tid] = reqp; REQPNEXT(reqp) = NULL; @@ -7925,7 +7933,7 @@ asc_dequeue(asc_queue_t *ascq, int tid) ASC_ASSERT(tid >= 0 && tid <= ADV_MAX_TID); if ((reqp = ascq->q_first[tid]) != NULL) { ASC_ASSERT(ascq->q_tidmask & ADV_TID_TO_TIDMASK(tid)); - ascq->q_first[tid] = REQPNEXT(reqp); + ascq->q_first[tid] = (REQP) REQPNEXT(reqp); /* If the queue is empty, clear its bit and the last pointer. */ if (ascq->q_first[tid] == NULL) { ascq->q_tidmask &= ~ADV_TID_TO_TIDMASK(tid); @@ -7992,7 +8000,7 @@ asc_dequeue_list(asc_queue_t *ascq, REQP { REQP reqp; ascq->q_cur_cnt[tid] = 0; - for (reqp = firstp; reqp; reqp = REQPNEXT(reqp)) { + for (reqp = firstp; reqp; reqp = (REQP) REQPNEXT(reqp)) { REQTIMESTAT("asc_dequeue_list", ascq, reqp, tid); } } @@ -8008,7 +8016,7 @@ asc_dequeue_list(asc_queue_t *ascq, REQP lastp = ascq->q_last[i]; } else { ASC_ASSERT(lastp != NULL); - REQPNEXT(lastp) = ascq->q_first[i]; + REQPNEXT(lastp) = (unsigned char *) ascq->q_first[i]; lastp = ascq->q_last[i]; } ascq->q_first[i] = ascq->q_last[i] = NULL; @@ -8021,7 +8029,7 @@ asc_dequeue_list(asc_queue_t *ascq, REQP #ifdef ADVANSYS_STATS { REQP reqp; - for (reqp = firstp; reqp; reqp = REQPNEXT(reqp)) { + for (reqp = firstp; reqp; reqp = (REQP) REQPNEXT(reqp)) { REQTIMESTAT("asc_dequeue_list", ascq, reqp, reqp->target); } } @@ -8065,7 +8073,7 @@ asc_rmqueue(asc_queue_t *ascq, REQP reqp */ if (reqp == ascq->q_first[tid]) { ret = ASC_TRUE; - ascq->q_first[tid] = REQPNEXT(reqp); + ascq->q_first[tid] = (REQP) REQPNEXT(reqp); /* If the queue is now empty, clear its bit and the last pointer. */ if (ascq->q_first[tid] == NULL) { ascq->q_tidmask &= ~ADV_TID_TO_TIDMASK(tid); @@ -8083,8 +8091,8 @@ asc_rmqueue(asc_queue_t *ascq, REQP reqp * Set 'prevp' to the first entry, 'currp' to the second entry, * and search for 'reqp'. */ - for (prevp = ascq->q_first[tid], currp = REQPNEXT(prevp); - currp; prevp = currp, currp = REQPNEXT(currp)) { + for (prevp = ascq->q_first[tid], currp = (REQP) REQPNEXT(prevp); + currp; prevp = currp, currp = (REQP) REQPNEXT(currp)) { if (currp == reqp) { ret = ASC_TRUE; REQPNEXT(prevp) = REQPNEXT(currp); @@ -8127,7 +8135,7 @@ asc_isqueued(asc_queue_t *ascq, REQP req tid = REQPTID(reqp); ASC_ASSERT(tid >= 0 && tid <= ADV_MAX_TID); - for (treqp = ascq->q_first[tid]; treqp; treqp = REQPNEXT(treqp)) { + for (treqp = ascq->q_first[tid]; treqp; treqp = (REQP) REQPNEXT(treqp)) { ASC_ASSERT(ascq->q_tidmask & ADV_TID_TO_TIDMASK(tid)); if (treqp == reqp) { ret = ASC_TRUE; @@ -9186,7 +9194,7 @@ asc_prt_line(char *buf, int buflen, char ret = vsprintf(s, fmt, args); ASC_ASSERT(ret < ASC_PRTLINE_SIZE); if (buf == NULL) { - (void) printk(s); + (void) printk("%s", s); ret = 0; } else { ret = ASC_MIN(buflen, ret); @@ -9219,10 +9227,10 @@ DvcSleepMilliSecond(ulong n) } } -STATIC int +STATIC long DvcEnterCritical(void) { - int flags; + long flags; save_flags(flags); cli(); @@ -9230,7 +9238,7 @@ DvcEnterCritical(void) } STATIC void -DvcLeaveCritical(int flags) +DvcLeaveCritical(long flags) { restore_flags(flags); } @@ -10190,7 +10198,7 @@ asc_prt_hex(char *f, uchar *s, int l) STATIC int interrupts_enabled(void) { - int flags; + long flags; save_flags(flags); if (flags & 0x0200) { @@ -15070,7 +15078,7 @@ AdvISR(ADV_DVC_VAR *asc_dvc) uchar int_stat; ushort next_done_loc, target_bit; int completed_q; - int flags; + long flags; ADV_SCSI_REQ_Q *scsiq; ASC_REQ_SENSE *sense_data; int ret;