Lines Matching refs:port
93 u32 SccbIOPort; /* Identifies board base port */
727 #define GET_XFER_CNT(port, xfercnt) {RD_HARP32(port,hp_xfercnt_0,xfercnt); xfercnt &= 0xFFFFFF;}
728 /* #define GET_XFER_CNT(port, xfercnt) (xfercnt = RD_HARPOON(port+hp_xfercnt_2), \
730 xfercnt |= RDW_HARPOON((unsigned short)(port+hp_xfercnt_0)))
732 #define HP_SETUP_ADDR_CNT(port,addr,count) (WRW_HARPOON((port+hp_host_addr_lo), (unsigned short)(addr & 0x0000FFFFL)),\
734 WRW_HARPOON((port+hp_host_addr_hmi), (unsigned short)(addr & 0x0000FFFFL)),\
735 WR_HARP32(port,hp_xfercnt_0,count),\
736 WRW_HARPOON((port+hp_xfer_cnt_lo), (unsigned short)(count & 0x0000FFFFL)),\
738 WR_HARPOON(port+hp_xfer_cnt_hi, (count & 0xFF)))
740 #define ACCEPT_MSG(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
741 WR_HARPOON(port+hp_scsisig, S_ILL_PH);}
743 #define ACCEPT_MSG_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
744 WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));}
746 #define DISABLE_AUTO(port) (WR_HARPOON(port+hp_scsireset, PROG_RESET),\
747 WR_HARPOON(port+hp_scsireset, 0x00))
761 static unsigned char FPT_sisyncn(u32 port, unsigned char p_card,
763 static void FPT_ssel(u32 port, unsigned char p_card);
764 static void FPT_sres(u32 port, unsigned char p_card,
766 static void FPT_shandem(u32 port, unsigned char p_card,
768 static void FPT_stsyncn(u32 port, unsigned char p_card);
769 static void FPT_sisyncr(u32 port, unsigned char sync_pulse,
774 static void FPT_sresb(u32 port, unsigned char p_card);
776 static void FPT_schkdd(u32 port, unsigned char p_card);
777 static unsigned char FPT_RdStack(u32 port, unsigned char index);
782 static void FPT_SendMsg(u32 port, unsigned char message);
789 static unsigned char FPT_siwidn(u32 port, unsigned char p_card);
790 static void FPT_stwidn(u32 port, unsigned char p_card);
791 static void FPT_siwidr(u32 port, unsigned char width);
820 static void FPT_phaseDataOut(u32 port, unsigned char p_card);
821 static void FPT_phaseDataIn(u32 port, unsigned char p_card);
822 static void FPT_phaseCommand(u32 port, unsigned char p_card);
823 static void FPT_phaseStatus(u32 port, unsigned char p_card);
824 static void FPT_phaseMsgOut(u32 port, unsigned char p_card);
825 static void FPT_phaseMsgIn(u32 port, unsigned char p_card);
826 static void FPT_phaseIllegal(u32 port, unsigned char p_card);
828 static void FPT_phaseDecode(u32 port, unsigned char p_card);
829 static void FPT_phaseChkFifo(u32 port, unsigned char p_card);
832 static void FPT_XbowInit(u32 port, unsigned char scamFlg);
836 static void FPT_dataXferProcessor(u32 port,
838 static void FPT_busMstrSGDataXferStart(u32 port,
840 static void FPT_busMstrDataXferStart(u32 port,
842 static void FPT_hostDataXferAbort(u32 port, unsigned char p_card,
2207 static unsigned char FPT_sfm(u32 port, struct sccb *pCurrSCCB)
2213 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
2217 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
2219 message = RD_HARPOON(port + hp_scsidata_0);
2221 WR_HARPOON(port + hp_scsisig, SCSI_ACK + S_MSGI_PH);
2226 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
2227 (RD_HARPOON(port + hp_addstat) & SCSI_PAR_ERR)) {
2228 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
2229 WR_HARPOON(port + hp_xferstat, 0);
2230 WR_HARPOON(port + hp_fiforead, 0);
2231 WR_HARPOON(port + hp_fifowrite, 0);
2237 ACCEPT_MSG_ATN(port);
2239 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
2243 WRW_HARPOON((port + hp_intstat), PARITY);
2246 if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) !=
2248 WRW_HARPOON((port + hp_intstat), PARITY);
2251 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
2253 RD_HARPOON(port + hp_scsidata_0);
2255 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
2260 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
2261 WR_HARPOON(port + hp_xferstat, 0);
2262 WR_HARPOON(port + hp_fiforead, 0);
2263 WR_HARPOON(port + hp_fifowrite, 0);
2275 static void FPT_ssel(u32 port, unsigned char p_card)
2292 ARAM_ACCESS(port);
2313 SGRAM_ACCESS(port);
2332 SGRAM_ACCESS(port);
2352 SGRAM_ACCESS(port);
2369 SGRAM_ACCESS(port);
2376 WR_HARPOON(port + hp_select_id, target);
2377 WR_HARPOON(port + hp_gp_reg_3, target); /* Use by new automation logic */
2380 WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT +
2384 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + NP);
2388 WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT));
2401 FPT_sssyncv(port, target, NARROW_SCSI, currTar_Info);
2407 WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT +
2411 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ);
2413 WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT +
2420 WRW_HARPOON((port + SYNC_MSGS + 2),
2422 WRW_HARPOON((port + SYNC_MSGS + 4), (BRH_OP + ALWAYS + NP));
2424 WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT));
2430 auto_loaded = FPT_siwidn(port, p_card);
2436 auto_loaded = FPT_sisyncn(port, p_card, 0);
2452 WRW_HARPOON((port + ID_MSG_STRT),
2455 WRW_HARPOON((port + NON_TAG_ID_MSG),
2459 WR_HARPOON(port + hp_autostart_3,
2470 WRW_HARPOON((port + ID_MSG_STRT),
2474 WRW_HARPOON((port + ID_MSG_STRT + 2),
2486 WRW_HARPOON((port +
2502 SGRAM_ACCESS(port);
2508 WR_HARPOON(port + hp_autostart_3,
2515 WRW_HARPOON((port + ID_MSG_STRT),
2518 WRW_HARPOON((port + NON_TAG_ID_MSG),
2523 WR_HARPOON(port + hp_autostart_3,
2529 cdb_reg = port + CMD_STRT;
2542 WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00);
2543 WR_HARPOON(port + hp_xferstat, 0x00);
2545 WRW_HARPOON((port + hp_intstat), (PROG_HLT | TIMEOUT | SEL | BUS_FREE));
2547 WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT));
2550 WR_HARPOON(port + hp_scsictrl_0,
2554 /* auto_loaded = (RD_HARPOON(port+hp_autostart_3) & (unsigned char)0x1F);
2558 DISABLE_AUTO(port);
2560 WR_HARPOON(port + hp_autostart_3, auto_loaded);
2563 SGRAM_ACCESS(port);
2574 static void FPT_sres(u32 port, unsigned char p_card,
2586 DISABLE_AUTO(port);
2588 WR_HARPOON((port + hp_scsictrl_0), (ENA_RESEL | ENA_SCAM_SEL));
2631 WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00);
2633 our_target = (unsigned char)(RD_HARPOON(port + hp_select_id) >> 4);
2642 while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) {
2643 if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) {
2645 WRW_HARPOON((port + hp_intstat), PHASE);
2650 WRW_HARPOON((port + hp_intstat), PHASE);
2651 if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH) {
2653 message = FPT_sfm(port, pCurrCard->currentSCCB);
2668 ACCEPT_MSG(port); /*Release the ACK for ID msg. */
2672 (port,
2677 (port);
2688 (port,
2709 ACCEPT_MSG_ATN(port);
2719 ACCEPT_MSG_ATN(port);
2722 (RDW_HARPOON((port + hp_intstat)) &
2724 && !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)
2725 && (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ;
2733 FPT_SendMsg(port, MSG_PARITY_ERROR);
2735 FPT_SendMsg(port, TARGET_RESET);
2737 FPT_sssyncv(port, our_target, NARROW_SCSI,
2769 ACCEPT_MSG(port);
2771 ACCEPT_MSG_ATN(port);
2781 ACCEPT_MSG(port);
2783 ACCEPT_MSG_ATN(port);
2789 ACCEPT_MSG(port);
2791 ACCEPT_MSG_ATN(port);
2805 while (!(RDW_HARPOON((port + hp_intstat)) & (PHASE | RESET)) &&
2806 !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ) &&
2807 (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ;
2810 static void FPT_SendMsg(u32 port, unsigned char message)
2812 while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) {
2813 if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) {
2815 WRW_HARPOON((port + hp_intstat), PHASE);
2820 WRW_HARPOON((port + hp_intstat), PHASE);
2821 if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGO_PH) {
2822 WRW_HARPOON((port + hp_intstat),
2825 WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN);
2827 WR_HARPOON(port + hp_scsidata_0, message);
2829 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
2831 ACCEPT_MSG(port);
2833 WR_HARPOON(port + hp_portctrl_0, 0x00);
2838 (RDW_HARPOON((port + hp_intstat)) &
2842 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
2843 WRW_HARPOON((port + hp_intstat), BUS_FREE);
2857 static void FPT_sdecm(unsigned char message, u32 port, unsigned char p_card)
2875 ACCEPT_MSG(port);
2876 WR_HARPOON(port + hp_autostart_1,
2888 ACCEPT_MSG(port);
2896 ACCEPT_MSG(port);
2897 WR_HARPOON(port + hp_autostart_1,
2909 WRW_HARPOON((port + hp_intstat), BUS_FREE);
2911 ACCEPT_MSG(port);
2913 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
2914 (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)))
2958 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
2961 WRW_HARPOON((port + hp_intstat),
2981 WR_HARPOON(port + hp_autostart_1,
2988 ACCEPT_MSG(port);
2990 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
2991 (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)))
2995 if (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)) {
2996 WR_HARPOON(port + hp_autostart_1,
3004 ACCEPT_MSG(port);
3005 FPT_shandem(port, p_card, currSCCB);
3010 ACCEPT_MSG(port); /* ACK the RESIDUE MSG */
3012 message = FPT_sfm(port, currSCCB);
3015 ACCEPT_MSG(port);
3016 WR_HARPOON(port + hp_autostart_1,
3025 ACCEPT_MSG_ATN(port);
3026 WR_HARPOON(port + hp_autostart_1,
3038 static void FPT_shandem(u32 port, unsigned char p_card, struct sccb *pCurrSCCB)
3042 length = FPT_sfm(port, pCurrSCCB);
3045 ACCEPT_MSG(port);
3046 message = FPT_sfm(port, pCurrSCCB);
3053 ACCEPT_MSG(port);
3054 FPT_stsyncn(port, p_card);
3058 ACCEPT_MSG_ATN(port);
3064 ACCEPT_MSG(port);
3065 FPT_stwidn(port, p_card);
3069 ACCEPT_MSG_ATN(port);
3071 WR_HARPOON(port + hp_autostart_1,
3078 ACCEPT_MSG_ATN(port);
3080 WR_HARPOON(port + hp_autostart_1,
3085 ACCEPT_MSG(port);
3086 WR_HARPOON(port + hp_autostart_1,
3091 WR_HARPOON(port + hp_autostart_1,
3105 static unsigned char FPT_sisyncn(u32 port, unsigned char p_card,
3116 WRW_HARPOON((port + ID_MSG_STRT),
3121 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ);
3123 WRW_HARPOON((port + SYNC_MSGS + 0),
3125 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03));
3126 WRW_HARPOON((port + SYNC_MSGS + 4),
3131 WRW_HARPOON((port + SYNC_MSGS + 6),
3137 WRW_HARPOON((port + SYNC_MSGS + 6),
3143 WRW_HARPOON((port + SYNC_MSGS + 6),
3147 WRW_HARPOON((port + SYNC_MSGS + 6),
3150 WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP));
3151 WRW_HARPOON((port + SYNC_MSGS + 10),
3153 WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP));
3156 WR_HARPOON(port + hp_autostart_3,
3163 WR_HARPOON(port + hp_autostart_3,
3186 static void FPT_stsyncn(u32 port, unsigned char p_card)
3195 sync_msg = FPT_sfm(port, currSCCB);
3198 WR_HARPOON(port + hp_autostart_1,
3203 ACCEPT_MSG(port);
3205 offset = FPT_sfm(port, currSCCB);
3208 WR_HARPOON(port + hp_autostart_1,
3282 FPT_sssyncv(port, currSCCB->TargID, sync_reg, currTar_Info);
3286 ACCEPT_MSG(port);
3292 WR_HARPOON(port + hp_autostart_1,
3298 ACCEPT_MSG_ATN(port);
3300 FPT_sisyncr(port, sync_msg, offset);
3315 static void FPT_sisyncr(u32 port, unsigned char sync_pulse,
3318 ARAM_ACCESS(port);
3319 WRW_HARPOON((port + SYNC_MSGS + 0),
3321 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03));
3322 WRW_HARPOON((port + SYNC_MSGS + 4),
3324 WRW_HARPOON((port + SYNC_MSGS + 6), (MPM_OP + AMSG_OUT + sync_pulse));
3325 WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP));
3326 WRW_HARPOON((port + SYNC_MSGS + 10), (MPM_OP + AMSG_OUT + offset));
3327 WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP));
3328 SGRAM_ACCESS(port);
3330 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
3331 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1);
3333 WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT));
3335 while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) {
3348 static unsigned char FPT_siwidn(u32 port, unsigned char p_card)
3358 WRW_HARPOON((port + ID_MSG_STRT),
3363 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ);
3365 WRW_HARPOON((port + SYNC_MSGS + 0),
3367 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02));
3368 WRW_HARPOON((port + SYNC_MSGS + 4),
3370 WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP));
3371 WRW_HARPOON((port + SYNC_MSGS + 8),
3373 WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP));
3375 WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT));
3403 static void FPT_stwidn(u32 port, unsigned char p_card)
3412 width = FPT_sfm(port, currSCCB);
3415 WR_HARPOON(port + hp_autostart_1,
3431 FPT_sssyncv(port, currSCCB->TargID, width, currTar_Info);
3440 ACCEPT_MSG_ATN(port);
3441 ARAM_ACCESS(port);
3442 FPT_sisyncn(port, p_card, 1);
3444 SGRAM_ACCESS(port);
3446 ACCEPT_MSG(port);
3447 WR_HARPOON(port + hp_autostart_1,
3454 ACCEPT_MSG_ATN(port);
3461 FPT_siwidr(port, width);
3474 static void FPT_siwidr(u32 port, unsigned char width)
3476 ARAM_ACCESS(port);
3477 WRW_HARPOON((port + SYNC_MSGS + 0),
3479 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02));
3480 WRW_HARPOON((port + SYNC_MSGS + 4),
3482 WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP));
3483 WRW_HARPOON((port + SYNC_MSGS + 8), (MPM_OP + AMSG_OUT + width));
3484 WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP));
3485 SGRAM_ACCESS(port);
3487 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
3488 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1);
3490 WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT));
3492 while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) {
3576 static void FPT_sresb(u32 port, unsigned char p_card)
3582 WR_HARPOON(port + hp_page_ctrl,
3583 (RD_HARPOON(port + hp_page_ctrl) | G_INT_DISABLE));
3584 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT);
3586 WR_HARPOON(port + hp_scsictrl_0, SCSI_RST);
3588 scsiID = RD_HARPOON(port + hp_seltimeout);
3589 WR_HARPOON(port + hp_seltimeout, TO_5ms);
3590 WRW_HARPOON((port + hp_intstat), TIMEOUT);
3592 WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT | START_TO));
3594 while (!(RDW_HARPOON((port + hp_intstat)) & TIMEOUT)) {
3597 WR_HARPOON(port + hp_seltimeout, scsiID);
3599 WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL);
3601 FPT_Wait(port, TO_5ms);
3603 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT);
3605 WR_HARPOON(port + hp_int_mask, (RD_HARPOON(port + hp_int_mask) | 0x00));
3619 FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info);
3635 WR_HARPOON(port + hp_page_ctrl,
3636 (RD_HARPOON(port + hp_page_ctrl) & ~G_INT_DISABLE));
3775 static void FPT_schkdd(u32 port, unsigned char p_card)
3796 WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00);
3797 WR_HARPOON(port + hp_xferstat, 0x00);
3807 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
3811 WRW_HARPOON((port + hp_intstat), PARITY);
3814 FPT_hostDataXferAbort(port, p_card, currSCCB);
3816 while (RD_HARPOON(port + hp_scsisig) & SCSI_ACK) {
3821 while (RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY) {
3822 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
3825 if (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) {
3828 if (RDW_HARPOON((port + hp_intstat)) & RESET) {
3831 if ((RD_HARPOON(port + hp_scsisig) & SCSI_REQ)
3836 sPhase = RD_HARPOON(port + hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ);
3837 if ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) ||
3838 (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) ||
3842 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
3846 FPT_phaseDataIn(port, p_card);
3850 FPT_phaseDataOut(port, p_card);
3853 FPT_sxfrp(port, p_card);
3854 if (!(RDW_HARPOON((port + hp_intstat)) &
3856 WRW_HARPOON((port + hp_intstat), AUTO_INT);
3857 FPT_phaseDecode(port, p_card);
3864 WR_HARPOON(port + hp_portctrl_0, 0x00);
3973 static void FPT_phaseDataOut(u32 port, unsigned char p_card)
3986 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
3988 WRW_HARPOON((port + hp_intstat), XFER_CNT_0);
3990 WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START));
3992 FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]);
4000 FPT_sxfrp(port, p_card);
4001 if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET)))
4002 FPT_phaseDecode(port, p_card);
4014 static void FPT_phaseDataIn(u32 port, unsigned char p_card)
4029 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
4031 WRW_HARPOON((port + hp_intstat), XFER_CNT_0);
4033 WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START));
4035 FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]);
4043 FPT_sxfrp(port, p_card);
4044 if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET)))
4045 FPT_phaseDecode(port, p_card);
4109 static void FPT_phaseStatus(u32 port, unsigned char p_card)
4116 WR_HARPOON(port + hp_scsisig, 0x00);
4118 WR_HARPOON(port + hp_autostart_0, (AUTO_IMMED + END_DATA_START));
4130 static void FPT_phaseMsgOut(u32 port, unsigned char p_card)
4147 FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info);
4182 FPT_ssel(port, p_card);
4196 WRW_HARPOON((port + hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0));
4198 WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN);
4200 WR_HARPOON(port + hp_scsidata_0, message);
4202 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
4204 ACCEPT_MSG(port);
4206 WR_HARPOON(port + hp_portctrl_0, 0x00);
4211 while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | PHASE))) {
4214 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
4215 WRW_HARPOON((port + hp_intstat), BUS_FREE);
4245 FPT_sxfrp(port, p_card);
4253 WR_HARPOON(port + hp_autostart_1,
4256 FPT_sxfrp(port, p_card);
4269 static void FPT_phaseMsgIn(u32 port, unsigned char p_card)
4278 FPT_phaseChkFifo(port, p_card);
4281 message = RD_HARPOON(port + hp_scsidata_0);
4284 WR_HARPOON(port + hp_autostart_1,
4291 message = FPT_sfm(port, currSCCB);
4294 FPT_sdecm(message, port, p_card);
4298 ACCEPT_MSG(port);
4299 WR_HARPOON(port + hp_autostart_1,
4316 static void FPT_phaseIllegal(u32 port, unsigned char p_card)
4322 WR_HARPOON(port + hp_scsisig, RD_HARPOON(port + hp_scsisig));
4330 ACCEPT_MSG_ATN(port);
4342 static void FPT_phaseChkFifo(u32 port, unsigned char p_card)
4351 while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) &&
4352 (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)) {
4355 if (!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) {
4360 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
4363 WRW_HARPOON((port + hp_intstat), PARITY);
4366 FPT_hostDataXferAbort(port, p_card, currSCCB);
4368 FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]);
4370 while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY))
4371 && (RD_HARPOON(port + hp_ext_status) &
4379 GET_XFER_CNT(port, xfercnt);
4381 WR_HARPOON(port + hp_xfercnt_0, 0x00);
4383 WR_HARPOON(port + hp_portctrl_0, 0x00);
4389 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
4393 WRW_HARPOON((port + hp_intstat), PARITY);
4396 FPT_hostDataXferAbort(port, p_card, currSCCB);
4398 WR_HARPOON(port + hp_fifowrite, 0x00);
4399 WR_HARPOON(port + hp_fiforead, 0x00);
4400 WR_HARPOON(port + hp_xferstat, 0x00);
4402 WRW_HARPOON((port + hp_intstat), XFER_CNT_0);
4413 static void FPT_phaseBusFree(u32 port, unsigned char p_card)
4421 DISABLE_AUTO(port);
4462 if ((!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ||
4463 (RDW_HARPOON((port + hp_intstat)) & RSEL)) {
4888 static void FPT_dataXferProcessor(u32 port, struct sccb_card *pCurrCard)
4902 FPT_busMstrSGDataXferStart(port, currSCCB);
4909 FPT_busMstrDataXferStart(port, currSCCB);
5106 static void FPT_hostDataXferAbort(u32 port, unsigned char p_card,
5119 if (!(RD_HARPOON(port + hp_int_status) & INT_CMD_COMPL)) {
5121 WR_HARPOON(port + hp_bm_ctrl,
5122 (RD_HARPOON(port + hp_bm_ctrl) |
5126 while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)
5130 WR_HARPOON(port + hp_bm_ctrl,
5131 (RD_HARPOON(port + hp_bm_ctrl) &
5134 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5136 if (FPT_busMstrTimeOut(port)) {
5145 if (RD_HARPOON(port + hp_int_status) &
5148 if (RD_HARPOON(port + hp_ext_status) &
5165 WR_HARPOON(port + hp_page_ctrl,
5166 (RD_HARPOON(port + hp_page_ctrl) &
5169 WR_HARPOON(port + hp_sg_addr, 0x00);
5220 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5222 FPT_busMstrTimeOut(port);
5227 if (RD_HARPOON(port + hp_int_status) &
5230 if (RD_HARPOON(port + hp_ext_status) &
5247 if ((RD_HARPOON(port + hp_fifo_cnt)) >= BM_THRESHOLD) {
5251 while ((RD_HARPOON(port + hp_ext_status) &
5253 && ((RD_HARPOON(port + hp_fifo_cnt)) >=
5258 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5260 WR_HARPOON(port + hp_bm_ctrl,
5261 (RD_HARPOON(port + hp_bm_ctrl) |
5266 while ((RD_HARPOON(port + hp_ext_status) &
5270 WR_HARPOON(port + hp_bm_ctrl,
5271 (RD_HARPOON(port + hp_bm_ctrl) &
5274 if (RD_HARPOON(port + hp_ext_status) &
5283 FPT_busMstrTimeOut(port);
5287 if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) {
5289 if (RD_HARPOON(port + hp_ext_status) &
5305 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5309 while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)
5313 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5320 FPT_busMstrTimeOut(port);
5324 if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) {
5326 if (RD_HARPOON(port + hp_ext_status) & BAD_EXT_STATUS) {
5338 WR_HARPOON(port + hp_page_ctrl,
5339 (RD_HARPOON(port + hp_page_ctrl) &
5342 WR_HARPOON(port + hp_sg_addr, 0x00);
5364 WR_HARPOON(port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT));
6405 static void FPT_XbowInit(u32 port, unsigned char ScamFlg)
6409 i = RD_HARPOON(port + hp_page_ctrl);
6410 WR_HARPOON(port + hp_page_ctrl, (unsigned char)(i | G_INT_DISABLE));
6412 WR_HARPOON(port + hp_scsireset, 0x00);
6413 WR_HARPOON(port + hp_portctrl_1, HOST_MODE8);
6415 WR_HARPOON(port + hp_scsireset, (DMA_RESET | HPSCSI_RESET | PROG_RESET |
6418 WR_HARPOON(port + hp_scsireset, SCSI_INI);
6420 WR_HARPOON(port + hp_clkctrl_0, CLKCTRL_DEFAULT);
6422 WR_HARPOON(port + hp_scsisig, 0x00); /* Clear any signals we might */
6423 WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL);
6425 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT);
6433 WRW_HARPOON((port + hp_intena), FPT_default_intena);
6435 WR_HARPOON(port + hp_seltimeout, TO_290ms);
6439 if (RD_HARPOON(port + hp_page_ctrl) & NARROW_SCSI_CARD)
6440 WR_HARPOON(port + hp_addstat, SCSI_MODE8);
6442 WR_HARPOON(port + hp_page_ctrl, i);