Lines Matching refs:port
93 u32 SccbIOPort; /* Identifies board base port */
755 #define GET_XFER_CNT(port, xfercnt) {RD_HARP32(port,hp_xfercnt_0,xfercnt); xfercnt &= 0xFFFFFF;}
756 /* #define GET_XFER_CNT(port, xfercnt) (xfercnt = RD_HARPOON(port+hp_xfercnt_2), \
758 xfercnt |= RDW_HARPOON((unsigned short)(port+hp_xfercnt_0)))
760 #define HP_SETUP_ADDR_CNT(port,addr,count) (WRW_HARPOON((port+hp_host_addr_lo), (unsigned short)(addr & 0x0000FFFFL)),\
762 WRW_HARPOON((port+hp_host_addr_hmi), (unsigned short)(addr & 0x0000FFFFL)),\
763 WR_HARP32(port,hp_xfercnt_0,count),\
764 WRW_HARPOON((port+hp_xfer_cnt_lo), (unsigned short)(count & 0x0000FFFFL)),\
766 WR_HARPOON(port+hp_xfer_cnt_hi, (count & 0xFF)))
768 #define ACCEPT_MSG(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
769 WR_HARPOON(port+hp_scsisig, S_ILL_PH);}
771 #define ACCEPT_MSG_ATN(port) {while(RD_HARPOON(port+hp_scsisig) & SCSI_REQ){}\
772 WR_HARPOON(port+hp_scsisig, (S_ILL_PH|SCSI_ATN));}
774 #define DISABLE_AUTO(port) (WR_HARPOON(port+hp_scsireset, PROG_RESET),\
775 WR_HARPOON(port+hp_scsireset, 0x00))
789 static unsigned char FPT_sisyncn(u32 port, unsigned char p_card,
791 static void FPT_ssel(u32 port, unsigned char p_card);
792 static void FPT_sres(u32 port, unsigned char p_card,
794 static void FPT_shandem(u32 port, unsigned char p_card,
796 static void FPT_stsyncn(u32 port, unsigned char p_card);
797 static void FPT_sisyncr(u32 port, unsigned char sync_pulse,
802 static void FPT_sresb(u32 port, unsigned char p_card);
804 static void FPT_schkdd(u32 port, unsigned char p_card);
805 static unsigned char FPT_RdStack(u32 port, unsigned char index);
810 static void FPT_SendMsg(u32 port, unsigned char message);
817 static unsigned char FPT_siwidn(u32 port, unsigned char p_card);
818 static void FPT_stwidn(u32 port, unsigned char p_card);
819 static void FPT_siwidr(u32 port, unsigned char width);
848 static void FPT_phaseDataOut(u32 port, unsigned char p_card);
849 static void FPT_phaseDataIn(u32 port, unsigned char p_card);
850 static void FPT_phaseCommand(u32 port, unsigned char p_card);
851 static void FPT_phaseStatus(u32 port, unsigned char p_card);
852 static void FPT_phaseMsgOut(u32 port, unsigned char p_card);
853 static void FPT_phaseMsgIn(u32 port, unsigned char p_card);
854 static void FPT_phaseIllegal(u32 port, unsigned char p_card);
856 static void FPT_phaseDecode(u32 port, unsigned char p_card);
857 static void FPT_phaseChkFifo(u32 port, unsigned char p_card);
860 static void FPT_XbowInit(u32 port, unsigned char scamFlg);
864 static void FPT_dataXferProcessor(u32 port,
866 static void FPT_busMstrSGDataXferStart(u32 port,
868 static void FPT_busMstrDataXferStart(u32 port,
870 static void FPT_hostDataXferAbort(u32 port, unsigned char p_card,
2239 static unsigned char FPT_sfm(u32 port, struct sccb *pCurrSCCB)
2245 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
2249 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
2251 message = RD_HARPOON(port + hp_scsidata_0);
2253 WR_HARPOON(port + hp_scsisig, SCSI_ACK + S_MSGI_PH);
2258 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
2259 (RD_HARPOON(port + hp_addstat) & SCSI_PAR_ERR)) {
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);
2269 ACCEPT_MSG_ATN(port);
2271 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
2275 WRW_HARPOON((port + hp_intstat), PARITY);
2278 if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) !=
2280 WRW_HARPOON((port + hp_intstat), PARITY);
2283 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
2285 RD_HARPOON(port + hp_scsidata_0);
2287 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
2292 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
2293 WR_HARPOON(port + hp_xferstat, 0);
2294 WR_HARPOON(port + hp_fiforead, 0);
2295 WR_HARPOON(port + hp_fifowrite, 0);
2307 static void FPT_ssel(u32 port, unsigned char p_card)
2324 ARAM_ACCESS(port);
2345 SGRAM_ACCESS(port);
2364 SGRAM_ACCESS(port);
2384 SGRAM_ACCESS(port);
2401 SGRAM_ACCESS(port);
2408 WR_HARPOON(port + hp_select_id, target);
2409 WR_HARPOON(port + hp_gp_reg_3, target); /* Use by new automation logic */
2412 WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT +
2416 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + NP);
2420 WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT));
2433 FPT_sssyncv(port, target, NARROW_SCSI, currTar_Info);
2439 WRW_HARPOON((port + ID_MSG_STRT), (MPM_OP + AMSG_OUT +
2443 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ);
2445 WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT +
2452 WRW_HARPOON((port + SYNC_MSGS + 2),
2454 WRW_HARPOON((port + SYNC_MSGS + 4), (BRH_OP + ALWAYS + NP));
2456 WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT));
2462 auto_loaded = FPT_siwidn(port, p_card);
2468 auto_loaded = FPT_sisyncn(port, p_card, 0);
2484 WRW_HARPOON((port + ID_MSG_STRT),
2487 WRW_HARPOON((port + NON_TAG_ID_MSG),
2491 WR_HARPOON(port + hp_autostart_3,
2502 WRW_HARPOON((port + ID_MSG_STRT),
2506 WRW_HARPOON((port + ID_MSG_STRT + 2),
2518 WRW_HARPOON((port +
2534 SGRAM_ACCESS(port);
2540 WR_HARPOON(port + hp_autostart_3,
2547 WRW_HARPOON((port + ID_MSG_STRT),
2550 WRW_HARPOON((port + NON_TAG_ID_MSG),
2555 WR_HARPOON(port + hp_autostart_3,
2561 cdb_reg = port + CMD_STRT;
2574 WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00);
2575 WR_HARPOON(port + hp_xferstat, 0x00);
2577 WRW_HARPOON((port + hp_intstat), (PROG_HLT | TIMEOUT | SEL | BUS_FREE));
2579 WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT));
2582 WR_HARPOON(port + hp_scsictrl_0,
2586 /* auto_loaded = (RD_HARPOON(port+hp_autostart_3) & (unsigned char)0x1F);
2590 DISABLE_AUTO(port);
2592 WR_HARPOON(port + hp_autostart_3, auto_loaded);
2595 SGRAM_ACCESS(port);
2606 static void FPT_sres(u32 port, unsigned char p_card,
2618 DISABLE_AUTO(port);
2620 WR_HARPOON((port + hp_scsictrl_0), (ENA_RESEL | ENA_SCAM_SEL));
2663 WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00);
2665 our_target = (unsigned char)(RD_HARPOON(port + hp_select_id) >> 4);
2674 while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) {
2675 if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) {
2677 WRW_HARPOON((port + hp_intstat), PHASE);
2682 WRW_HARPOON((port + hp_intstat), PHASE);
2683 if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGI_PH) {
2685 message = FPT_sfm(port, pCurrCard->currentSCCB);
2700 ACCEPT_MSG(port); /*Release the ACK for ID msg. */
2704 (port,
2709 (port);
2720 (port,
2741 ACCEPT_MSG_ATN(port);
2751 ACCEPT_MSG_ATN(port);
2754 (RDW_HARPOON((port + hp_intstat)) &
2756 && !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)
2757 && (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ;
2765 FPT_SendMsg(port, SMPARITY);
2767 FPT_SendMsg(port, SMDEV_RESET);
2769 FPT_sssyncv(port, our_target, NARROW_SCSI,
2801 ACCEPT_MSG(port);
2803 ACCEPT_MSG_ATN(port);
2813 ACCEPT_MSG(port);
2815 ACCEPT_MSG_ATN(port);
2821 ACCEPT_MSG(port);
2823 ACCEPT_MSG_ATN(port);
2837 while (!(RDW_HARPOON((port + hp_intstat)) & (PHASE | RESET)) &&
2838 !(RD_HARPOON(port + hp_scsisig) & SCSI_REQ) &&
2839 (RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ;
2842 static void FPT_SendMsg(u32 port, unsigned char message)
2844 while (!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) {
2845 if (!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) {
2847 WRW_HARPOON((port + hp_intstat), PHASE);
2852 WRW_HARPOON((port + hp_intstat), PHASE);
2853 if ((RD_HARPOON(port + hp_scsisig) & S_SCSI_PHZ) == S_MSGO_PH) {
2854 WRW_HARPOON((port + hp_intstat),
2857 WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN);
2859 WR_HARPOON(port + hp_scsidata_0, message);
2861 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
2863 ACCEPT_MSG(port);
2865 WR_HARPOON(port + hp_portctrl_0, 0x00);
2870 (RDW_HARPOON((port + hp_intstat)) &
2874 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
2875 WRW_HARPOON((port + hp_intstat), BUS_FREE);
2889 static void FPT_sdecm(unsigned char message, u32 port, unsigned char p_card)
2907 ACCEPT_MSG(port);
2908 WR_HARPOON(port + hp_autostart_1,
2920 ACCEPT_MSG(port);
2927 ACCEPT_MSG(port);
2928 WR_HARPOON(port + hp_autostart_1,
2940 WRW_HARPOON((port + hp_intstat), BUS_FREE);
2942 ACCEPT_MSG(port);
2944 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
2945 (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)))
2989 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
2992 WRW_HARPOON((port + hp_intstat),
3012 WR_HARPOON(port + hp_autostart_1,
3019 ACCEPT_MSG(port);
3021 while ((!(RD_HARPOON(port + hp_scsisig) & SCSI_REQ)) &&
3022 (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)))
3026 if (!(RDW_HARPOON((port + hp_intstat)) & BUS_FREE)) {
3027 WR_HARPOON(port + hp_autostart_1,
3035 ACCEPT_MSG(port);
3036 FPT_shandem(port, p_card, currSCCB);
3041 ACCEPT_MSG(port); /* ACK the RESIDUE MSG */
3043 message = FPT_sfm(port, currSCCB);
3046 ACCEPT_MSG(port);
3047 WR_HARPOON(port + hp_autostart_1,
3056 ACCEPT_MSG_ATN(port);
3057 WR_HARPOON(port + hp_autostart_1,
3069 static void FPT_shandem(u32 port, unsigned char p_card, struct sccb *pCurrSCCB)
3073 length = FPT_sfm(port, pCurrSCCB);
3076 ACCEPT_MSG(port);
3077 message = FPT_sfm(port, pCurrSCCB);
3084 ACCEPT_MSG(port);
3085 FPT_stsyncn(port, p_card);
3089 ACCEPT_MSG_ATN(port);
3095 ACCEPT_MSG(port);
3096 FPT_stwidn(port, p_card);
3100 ACCEPT_MSG_ATN(port);
3102 WR_HARPOON(port + hp_autostart_1,
3109 ACCEPT_MSG_ATN(port);
3111 WR_HARPOON(port + hp_autostart_1,
3116 ACCEPT_MSG(port);
3117 WR_HARPOON(port + hp_autostart_1,
3122 WR_HARPOON(port + hp_autostart_1,
3136 static unsigned char FPT_sisyncn(u32 port, unsigned char p_card,
3147 WRW_HARPOON((port + ID_MSG_STRT),
3152 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ);
3154 WRW_HARPOON((port + SYNC_MSGS + 0),
3156 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03));
3157 WRW_HARPOON((port + SYNC_MSGS + 4),
3162 WRW_HARPOON((port + SYNC_MSGS + 6),
3168 WRW_HARPOON((port + SYNC_MSGS + 6),
3174 WRW_HARPOON((port + SYNC_MSGS + 6),
3178 WRW_HARPOON((port + SYNC_MSGS + 6),
3181 WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP));
3182 WRW_HARPOON((port + SYNC_MSGS + 10),
3184 WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP));
3187 WR_HARPOON(port + hp_autostart_3,
3194 WR_HARPOON(port + hp_autostart_3,
3217 static void FPT_stsyncn(u32 port, unsigned char p_card)
3226 sync_msg = FPT_sfm(port, currSCCB);
3229 WR_HARPOON(port + hp_autostart_1,
3234 ACCEPT_MSG(port);
3236 offset = FPT_sfm(port, currSCCB);
3239 WR_HARPOON(port + hp_autostart_1,
3313 FPT_sssyncv(port, currSCCB->TargID, sync_reg, currTar_Info);
3317 ACCEPT_MSG(port);
3323 WR_HARPOON(port + hp_autostart_1,
3329 ACCEPT_MSG_ATN(port);
3331 FPT_sisyncr(port, sync_msg, offset);
3346 static void FPT_sisyncr(u32 port, unsigned char sync_pulse,
3349 ARAM_ACCESS(port);
3350 WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + SMEXT));
3351 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x03));
3352 WRW_HARPOON((port + SYNC_MSGS + 4), (MPM_OP + AMSG_OUT + SMSYNC));
3353 WRW_HARPOON((port + SYNC_MSGS + 6), (MPM_OP + AMSG_OUT + sync_pulse));
3354 WRW_HARPOON((port + SYNC_MSGS + 8), (RAT_OP));
3355 WRW_HARPOON((port + SYNC_MSGS + 10), (MPM_OP + AMSG_OUT + offset));
3356 WRW_HARPOON((port + SYNC_MSGS + 12), (BRH_OP + ALWAYS + NP));
3357 SGRAM_ACCESS(port);
3359 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
3360 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1);
3362 WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT));
3364 while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) {
3377 static unsigned char FPT_siwidn(u32 port, unsigned char p_card)
3387 WRW_HARPOON((port + ID_MSG_STRT),
3392 WRW_HARPOON((port + ID_MSG_STRT + 2), BRH_OP + ALWAYS + CMDPZ);
3394 WRW_HARPOON((port + SYNC_MSGS + 0),
3396 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02));
3397 WRW_HARPOON((port + SYNC_MSGS + 4),
3399 WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP));
3400 WRW_HARPOON((port + SYNC_MSGS + 8),
3402 WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP));
3404 WR_HARPOON(port + hp_autostart_3, (SELECT + SELCHK_STRT));
3432 static void FPT_stwidn(u32 port, unsigned char p_card)
3441 width = FPT_sfm(port, currSCCB);
3444 WR_HARPOON(port + hp_autostart_1,
3460 FPT_sssyncv(port, currSCCB->TargID, width, currTar_Info);
3469 ACCEPT_MSG_ATN(port);
3470 ARAM_ACCESS(port);
3471 FPT_sisyncn(port, p_card, 1);
3473 SGRAM_ACCESS(port);
3475 ACCEPT_MSG(port);
3476 WR_HARPOON(port + hp_autostart_1,
3483 ACCEPT_MSG_ATN(port);
3490 FPT_siwidr(port, width);
3503 static void FPT_siwidr(u32 port, unsigned char width)
3505 ARAM_ACCESS(port);
3506 WRW_HARPOON((port + SYNC_MSGS + 0), (MPM_OP + AMSG_OUT + SMEXT));
3507 WRW_HARPOON((port + SYNC_MSGS + 2), (MPM_OP + AMSG_OUT + 0x02));
3508 WRW_HARPOON((port + SYNC_MSGS + 4), (MPM_OP + AMSG_OUT + SMWDTR));
3509 WRW_HARPOON((port + SYNC_MSGS + 6), (RAT_OP));
3510 WRW_HARPOON((port + SYNC_MSGS + 8), (MPM_OP + AMSG_OUT + width));
3511 WRW_HARPOON((port + SYNC_MSGS + 10), (BRH_OP + ALWAYS + NP));
3512 SGRAM_ACCESS(port);
3514 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
3515 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT_1);
3517 WR_HARPOON(port + hp_autostart_3, (AUTO_IMMED + CMD_ONLY_STRT));
3519 while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | AUTO_INT))) {
3603 static void FPT_sresb(u32 port, unsigned char p_card)
3609 WR_HARPOON(port + hp_page_ctrl,
3610 (RD_HARPOON(port + hp_page_ctrl) | G_INT_DISABLE));
3611 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT);
3613 WR_HARPOON(port + hp_scsictrl_0, SCSI_RST);
3615 scsiID = RD_HARPOON(port + hp_seltimeout);
3616 WR_HARPOON(port + hp_seltimeout, TO_5ms);
3617 WRW_HARPOON((port + hp_intstat), TIMEOUT);
3619 WR_HARPOON(port + hp_portctrl_0, (SCSI_PORT | START_TO));
3621 while (!(RDW_HARPOON((port + hp_intstat)) & TIMEOUT)) {
3624 WR_HARPOON(port + hp_seltimeout, scsiID);
3626 WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL);
3628 FPT_Wait(port, TO_5ms);
3630 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT);
3632 WR_HARPOON(port + hp_int_mask, (RD_HARPOON(port + hp_int_mask) | 0x00));
3646 FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info);
3662 WR_HARPOON(port + hp_page_ctrl,
3663 (RD_HARPOON(port + hp_page_ctrl) & ~G_INT_DISABLE));
3802 static void FPT_schkdd(u32 port, unsigned char p_card)
3823 WRW_HARPOON((port + hp_fiforead), (unsigned short)0x00);
3824 WR_HARPOON(port + hp_xferstat, 0x00);
3834 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
3838 WRW_HARPOON((port + hp_intstat), PARITY);
3841 FPT_hostDataXferAbort(port, p_card, currSCCB);
3843 while (RD_HARPOON(port + hp_scsisig) & SCSI_ACK) {
3848 while (RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY) {
3849 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
3852 if (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) {
3855 if (RDW_HARPOON((port + hp_intstat)) & RESET) {
3858 if ((RD_HARPOON(port + hp_scsisig) & SCSI_REQ)
3863 sPhase = RD_HARPOON(port + hp_scsisig) & (SCSI_BSY | S_SCSI_PHZ);
3864 if ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) ||
3865 (RD_HARPOON(port + hp_offsetctr) & (unsigned char)0x1F) ||
3869 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
3873 FPT_phaseDataIn(port, p_card);
3877 FPT_phaseDataOut(port, p_card);
3880 FPT_sxfrp(port, p_card);
3881 if (!(RDW_HARPOON((port + hp_intstat)) &
3883 WRW_HARPOON((port + hp_intstat), AUTO_INT);
3884 FPT_phaseDecode(port, p_card);
3891 WR_HARPOON(port + hp_portctrl_0, 0x00);
4004 static void FPT_phaseDataOut(u32 port, unsigned char p_card)
4017 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
4019 WRW_HARPOON((port + hp_intstat), XFER_CNT_0);
4021 WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START));
4023 FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]);
4031 FPT_sxfrp(port, p_card);
4032 if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET)))
4033 FPT_phaseDecode(port, p_card);
4045 static void FPT_phaseDataIn(u32 port, unsigned char p_card)
4060 WR_HARPOON(port + hp_portctrl_0, SCSI_PORT);
4062 WRW_HARPOON((port + hp_intstat), XFER_CNT_0);
4064 WR_HARPOON(port + hp_autostart_0, (END_DATA + END_DATA_START));
4066 FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]);
4074 FPT_sxfrp(port, p_card);
4075 if (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | RESET)))
4076 FPT_phaseDecode(port, p_card);
4140 static void FPT_phaseStatus(u32 port, unsigned char p_card)
4147 WR_HARPOON(port + hp_scsisig, 0x00);
4149 WR_HARPOON(port + hp_autostart_0, (AUTO_IMMED + END_DATA_START));
4161 static void FPT_phaseMsgOut(u32 port, unsigned char p_card)
4178 FPT_sssyncv(port, scsiID, NARROW_SCSI, currTar_Info);
4213 FPT_ssel(port, p_card);
4227 WRW_HARPOON((port + hp_intstat), (BUS_FREE | PHASE | XFER_CNT_0));
4229 WR_HARPOON(port + hp_portctrl_0, SCSI_BUS_EN);
4231 WR_HARPOON(port + hp_scsidata_0, message);
4233 WR_HARPOON(port + hp_scsisig, (SCSI_ACK + S_ILL_PH));
4235 ACCEPT_MSG(port);
4237 WR_HARPOON(port + hp_portctrl_0, 0x00);
4242 while (!(RDW_HARPOON((port + hp_intstat)) & (BUS_FREE | PHASE))) {
4245 if (RDW_HARPOON((port + hp_intstat)) & BUS_FREE) {
4246 WRW_HARPOON((port + hp_intstat), BUS_FREE);
4276 FPT_sxfrp(port, p_card);
4284 WR_HARPOON(port + hp_autostart_1,
4287 FPT_sxfrp(port, p_card);
4300 static void FPT_phaseMsgIn(u32 port, unsigned char p_card)
4309 FPT_phaseChkFifo(port, p_card);
4312 message = RD_HARPOON(port + hp_scsidata_0);
4315 WR_HARPOON(port + hp_autostart_1,
4322 message = FPT_sfm(port, currSCCB);
4325 FPT_sdecm(message, port, p_card);
4329 ACCEPT_MSG(port);
4330 WR_HARPOON(port + hp_autostart_1,
4347 static void FPT_phaseIllegal(u32 port, unsigned char p_card)
4353 WR_HARPOON(port + hp_scsisig, RD_HARPOON(port + hp_scsisig));
4361 ACCEPT_MSG_ATN(port);
4373 static void FPT_phaseChkFifo(u32 port, unsigned char p_card)
4382 while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) &&
4383 (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)) {
4386 if (!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY)) {
4391 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
4394 WRW_HARPOON((port + hp_intstat), PARITY);
4397 FPT_hostDataXferAbort(port, p_card, currSCCB);
4399 FPT_dataXferProcessor(port, &FPT_BL_Card[p_card]);
4401 while ((!(RD_HARPOON(port + hp_xferstat) & FIFO_EMPTY))
4402 && (RD_HARPOON(port + hp_ext_status) &
4410 GET_XFER_CNT(port, xfercnt);
4412 WR_HARPOON(port + hp_xfercnt_0, 0x00);
4414 WR_HARPOON(port + hp_portctrl_0, 0x00);
4420 if ((RDW_HARPOON((port + hp_intstat)) & PARITY) &&
4424 WRW_HARPOON((port + hp_intstat), PARITY);
4427 FPT_hostDataXferAbort(port, p_card, currSCCB);
4429 WR_HARPOON(port + hp_fifowrite, 0x00);
4430 WR_HARPOON(port + hp_fiforead, 0x00);
4431 WR_HARPOON(port + hp_xferstat, 0x00);
4433 WRW_HARPOON((port + hp_intstat), XFER_CNT_0);
4444 static void FPT_phaseBusFree(u32 port, unsigned char p_card)
4452 DISABLE_AUTO(port);
4493 if ((!(RD_HARPOON(port + hp_scsisig) & SCSI_BSY)) ||
4494 (RDW_HARPOON((port + hp_intstat)) & RSEL)) {
4919 static void FPT_dataXferProcessor(u32 port, struct sccb_card *pCurrCard)
4933 FPT_busMstrSGDataXferStart(port, currSCCB);
4940 FPT_busMstrDataXferStart(port, currSCCB);
5137 static void FPT_hostDataXferAbort(u32 port, unsigned char p_card,
5150 if (!(RD_HARPOON(port + hp_int_status) & INT_CMD_COMPL)) {
5152 WR_HARPOON(port + hp_bm_ctrl,
5153 (RD_HARPOON(port + hp_bm_ctrl) |
5157 while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)
5161 WR_HARPOON(port + hp_bm_ctrl,
5162 (RD_HARPOON(port + hp_bm_ctrl) &
5165 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5167 if (FPT_busMstrTimeOut(port)) {
5176 if (RD_HARPOON(port + hp_int_status) &
5179 if (RD_HARPOON(port + hp_ext_status) &
5196 WR_HARPOON(port + hp_page_ctrl,
5197 (RD_HARPOON(port + hp_page_ctrl) &
5200 WR_HARPOON(port + hp_sg_addr, 0x00);
5251 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5253 FPT_busMstrTimeOut(port);
5258 if (RD_HARPOON(port + hp_int_status) &
5261 if (RD_HARPOON(port + hp_ext_status) &
5278 if ((RD_HARPOON(port + hp_fifo_cnt)) >= BM_THRESHOLD) {
5282 while ((RD_HARPOON(port + hp_ext_status) &
5284 && ((RD_HARPOON(port + hp_fifo_cnt)) >=
5289 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5291 WR_HARPOON(port + hp_bm_ctrl,
5292 (RD_HARPOON(port + hp_bm_ctrl) |
5297 while ((RD_HARPOON(port + hp_ext_status) &
5301 WR_HARPOON(port + hp_bm_ctrl,
5302 (RD_HARPOON(port + hp_bm_ctrl) &
5305 if (RD_HARPOON(port + hp_ext_status) &
5314 FPT_busMstrTimeOut(port);
5318 if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) {
5320 if (RD_HARPOON(port + hp_ext_status) &
5336 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5340 while ((RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY)
5344 if (RD_HARPOON(port + hp_ext_status) & BM_CMD_BUSY) {
5351 FPT_busMstrTimeOut(port);
5355 if (RD_HARPOON(port + hp_int_status) & INT_EXT_STATUS) {
5357 if (RD_HARPOON(port + hp_ext_status) & BAD_EXT_STATUS) {
5369 WR_HARPOON(port + hp_page_ctrl,
5370 (RD_HARPOON(port + hp_page_ctrl) &
5373 WR_HARPOON(port + hp_sg_addr, 0x00);
5395 WR_HARPOON(port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT));
6436 static void FPT_XbowInit(u32 port, unsigned char ScamFlg)
6440 i = RD_HARPOON(port + hp_page_ctrl);
6441 WR_HARPOON(port + hp_page_ctrl, (unsigned char)(i | G_INT_DISABLE));
6443 WR_HARPOON(port + hp_scsireset, 0x00);
6444 WR_HARPOON(port + hp_portctrl_1, HOST_MODE8);
6446 WR_HARPOON(port + hp_scsireset, (DMA_RESET | HPSCSI_RESET | PROG_RESET |
6449 WR_HARPOON(port + hp_scsireset, SCSI_INI);
6451 WR_HARPOON(port + hp_clkctrl_0, CLKCTRL_DEFAULT);
6453 WR_HARPOON(port + hp_scsisig, 0x00); /* Clear any signals we might */
6454 WR_HARPOON(port + hp_scsictrl_0, ENA_SCAM_SEL);
6456 WRW_HARPOON((port + hp_intstat), CLR_ALL_INT);
6464 WRW_HARPOON((port + hp_intena), FPT_default_intena);
6466 WR_HARPOON(port + hp_seltimeout, TO_290ms);
6470 if (RD_HARPOON(port + hp_page_ctrl) & NARROW_SCSI_CARD)
6471 WR_HARPOON(port + hp_addstat, SCSI_MODE8);
6473 WR_HARPOON(port + hp_page_ctrl, i);