Lines Matching refs:p_port

777 #define ARAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \  argument
778 (RD_HARPOON(p_port+hp_page_ctrl) | SGRAM_ARAM)))
780 #define SGRAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \ argument
781 (RD_HARPOON(p_port+hp_page_ctrl) & ~SGRAM_ARAM)))
783 #define MDISABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \ argument
784 (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE)))
786 #define MENABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \ argument
787 (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)))
799 static void FPT_sssyncv(u32 p_port, unsigned char p_id,
803 static void FPT_sxfrp(u32 p_port, unsigned char p_card);
836 static void FPT_Wait1Second(u32 p_port);
837 static void FPT_Wait(u32 p_port, unsigned char p_delay);
838 static void FPT_utilEEWriteOnOff(u32 p_port, unsigned char p_mode);
839 static void FPT_utilEEWrite(u32 p_port, unsigned short ee_data,
841 static unsigned short FPT_utilEERead(u32 p_port,
843 static unsigned short FPT_utilEEReadOrg(u32 p_port,
845 static void FPT_utilEESendCmdAddr(u32 p_port, unsigned char ee_cmd,
858 static void FPT_phaseBusFree(u32 p_port, unsigned char p_card);
861 static void FPT_BusMasterInit(u32 p_port);
862 static void FPT_DiagEEPROM(u32 p_port);
874 static unsigned char FPT_SccbMgr_bad_isr(u32 p_port,
888 static int FPT_scarb(u32 p_port, unsigned char p_sel_type);
889 static void FPT_scbusf(u32 p_port);
890 static void FPT_scsel(u32 p_port);
891 static void FPT_scasid(unsigned char p_card, u32 p_port);
892 static unsigned char FPT_scxferc(u32 p_port, unsigned char p_data);
893 static unsigned char FPT_scsendi(u32 p_port,
895 static unsigned char FPT_sciso(u32 p_port,
897 static void FPT_scwirod(u32 p_port, unsigned char p_data_bit);
898 static void FPT_scwiros(u32 p_port, unsigned char p_data_bit);
900 static unsigned char FPT_scsell(u32 p_port, unsigned char targ_id);
901 static void FPT_scwtsel(u32 p_port);
902 static void FPT_inisci(unsigned char p_card, u32 p_port,
904 static void FPT_scsavdi(unsigned char p_card, u32 p_port);
908 static void FPT_autoCmdCmplt(u32 p_port, unsigned char p_card);
909 static void FPT_autoLoadDefaultMap(u32 p_port);
1992 static unsigned char FPT_SccbMgr_bad_isr(u32 p_port, unsigned char p_card, in FPT_SccbMgr_bad_isr() argument
2000 if (RD_HARPOON(p_port + hp_ext_status) & in FPT_SccbMgr_bad_isr()
2005 FPT_hostDataXferAbort(p_port, p_card, in FPT_SccbMgr_bad_isr()
2009 if (RD_HARPOON(p_port + hp_pci_stat_cfg) & REC_MASTER_ABORT) in FPT_SccbMgr_bad_isr()
2011 WR_HARPOON(p_port + hp_pci_stat_cfg, in FPT_SccbMgr_bad_isr()
2012 (RD_HARPOON(p_port + hp_pci_stat_cfg) & in FPT_SccbMgr_bad_isr()
2015 WR_HARPOON(p_port + hp_host_blk_cnt, 0x00); in FPT_SccbMgr_bad_isr()
2025 FPT_sxfrp(p_port, p_card); in FPT_SccbMgr_bad_isr()
2027 temp = (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) & in FPT_SccbMgr_bad_isr()
2029 WR_HARPOON(p_port + hp_ee_ctrl, in FPT_SccbMgr_bad_isr()
2031 WR_HARPOON(p_port + hp_ee_ctrl, temp); in FPT_SccbMgr_bad_isr()
2034 (RDW_HARPOON((p_port + hp_intstat)) & in FPT_SccbMgr_bad_isr()
2036 FPT_phaseDecode(p_port, p_card); in FPT_SccbMgr_bad_isr()
2043 WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT); in FPT_SccbMgr_bad_isr()
2044 WR_HARPOON(p_port + hp_sys_ctrl, 0x00); in FPT_SccbMgr_bad_isr()
2049 FPT_hostDataXferAbort(p_port, p_card, in FPT_SccbMgr_bad_isr()
2053 DISABLE_AUTO(p_port); in FPT_SccbMgr_bad_isr()
2055 FPT_sresb(p_port, p_card); in FPT_SccbMgr_bad_isr()
2057 while (RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST) { in FPT_SccbMgr_bad_isr()
2065 (unsigned char)FPT_utilEERead(p_port, in FPT_SccbMgr_bad_isr()
2069 FPT_XbowInit(p_port, ScamFlg); in FPT_SccbMgr_bad_isr()
2078 WRW_HARPOON((p_port + hp_intstat), FIFO); in FPT_SccbMgr_bad_isr()
2081 FPT_sxfrp(p_port, p_card); in FPT_SccbMgr_bad_isr()
2086 DISABLE_AUTO(p_port); in FPT_SccbMgr_bad_isr()
2088 WRW_HARPOON((p_port + hp_intstat), in FPT_SccbMgr_bad_isr()
2113 FPT_sssyncv(p_port, pCurrCard->currentSCCB->TargID, NARROW_SCSI, in FPT_SccbMgr_bad_isr()
2122 FPT_scarb(p_port, LEVEL2_TAR); in FPT_SccbMgr_bad_isr()
2123 FPT_scsel(p_port); in FPT_SccbMgr_bad_isr()
2124 FPT_scasid(p_card, p_port); in FPT_SccbMgr_bad_isr()
2126 FPT_scbusf(p_port); in FPT_SccbMgr_bad_isr()
2128 WRW_HARPOON((p_port + hp_intstat), SCAM_SEL); in FPT_SccbMgr_bad_isr()
3531 static void FPT_sssyncv(u32 p_port, unsigned char p_id, in FPT_sssyncv() argument
3591 WR_HARPOON(p_port + hp_synctarg_base + index, p_sync_value); in FPT_sssyncv()
3720 static void FPT_sxfrp(u32 p_port, unsigned char p_card) in FPT_sxfrp() argument
3724 DISABLE_AUTO(p_port); in FPT_sxfrp()
3728 FPT_hostDataXferAbort(p_port, p_card, in FPT_sxfrp()
3736 if (RDW_HARPOON((p_port + hp_intstat)) & in FPT_sxfrp()
3740 WR_HARPOON(p_port + hp_xfercnt_0, 0x00); in FPT_sxfrp()
3742 curr_phz = RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ; in FPT_sxfrp()
3744 WRW_HARPOON((p_port + hp_intstat), XFER_CNT_0); in FPT_sxfrp()
3746 WR_HARPOON(p_port + hp_scsisig, curr_phz); in FPT_sxfrp()
3748 while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET)) && in FPT_sxfrp()
3750 (RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ))) in FPT_sxfrp()
3753 WR_HARPOON(p_port + hp_portctrl_0, in FPT_sxfrp()
3756 if (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) { in FPT_sxfrp()
3757 RD_HARPOON(p_port + hp_fifodata_0); in FPT_sxfrp()
3760 WR_HARPOON(p_port + hp_portctrl_0, in FPT_sxfrp()
3762 if (RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY) { in FPT_sxfrp()
3763 WR_HARPOON(p_port + hp_fifodata_0, 0xFA); in FPT_sxfrp()
3768 while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) { in FPT_sxfrp()
3769 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) in FPT_sxfrp()
3773 WR_HARPOON(p_port + hp_portctrl_0, in FPT_sxfrp()
3775 while (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) { in FPT_sxfrp()
3776 RD_HARPOON(p_port + hp_fifodata_0); in FPT_sxfrp()
3779 if (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) { in FPT_sxfrp()
3780 WR_HARPOON(p_port + hp_autostart_0, in FPT_sxfrp()
3782 while (!(RDW_HARPOON((p_port + hp_intstat)) & AUTO_INT)) { in FPT_sxfrp()
3785 if (RDW_HARPOON((p_port + hp_intstat)) & in FPT_sxfrp()
3788 (RDW_HARPOON((p_port + hp_intstat)) & in FPT_sxfrp()
3981 static void FPT_phaseDecode(u32 p_port, unsigned char p_card) in FPT_phaseDecode() argument
3986 DISABLE_AUTO(p_port); in FPT_phaseDecode()
3989 (unsigned char)(RD_HARPOON(p_port + hp_scsisig) & S_SCSI_PHZ); in FPT_phaseDecode()
3993 (*phase) (p_port, p_card); /* Call the correct phase func */ in FPT_phaseDecode()
4089 static void FPT_phaseCommand(u32 p_port, unsigned char p_card) in FPT_phaseCommand() argument
4103 WR_HARPOON(p_port + hp_scsisig, 0x00); in FPT_phaseCommand()
4105 ARAM_ACCESS(p_port); in FPT_phaseCommand()
4107 cdb_reg = p_port + CMD_STRT; in FPT_phaseCommand()
4124 WR_HARPOON(p_port + hp_portctrl_0, (SCSI_PORT)); in FPT_phaseCommand()
4128 WR_HARPOON(p_port + hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT)); in FPT_phaseCommand()
4129 SGRAM_ACCESS(p_port); in FPT_phaseCommand()
4540 static void FPT_autoLoadDefaultMap(u32 p_port) in FPT_autoLoadDefaultMap() argument
4544 ARAM_ACCESS(p_port); in FPT_autoLoadDefaultMap()
4545 map_addr = p_port + hp_aramBase; in FPT_autoLoadDefaultMap()
4634 SGRAM_ACCESS(p_port); in FPT_autoLoadDefaultMap()
4646 static void FPT_autoCmdCmplt(u32 p_port, unsigned char p_card) in FPT_autoCmdCmplt() argument
4653 status_byte = RD_HARPOON(p_port + hp_gp_reg_0); in FPT_autoCmdCmplt()
4952 static void FPT_busMstrSGDataXferStart(u32 p_port, struct sccb *pcurrSCCB) in FPT_busMstrSGDataXferStart() argument
4970 i = (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) & in FPT_busMstrSGDataXferStart()
4973 WR_HARPOON(p_port + hp_page_ctrl, i); in FPT_busMstrSGDataXferStart()
4993 WR_HARP32(p_port, reg_offset, addr); in FPT_busMstrSGDataXferStart()
4996 WR_HARP32(p_port, reg_offset, count); in FPT_busMstrSGDataXferStart()
5007 WR_HARPOON(p_port + hp_sg_addr, (sg_count << 4)); in FPT_busMstrSGDataXferStart()
5011 WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt); in FPT_busMstrSGDataXferStart()
5013 WR_HARPOON(p_port + hp_portctrl_0, in FPT_busMstrSGDataXferStart()
5015 WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH); in FPT_busMstrSGDataXferStart()
5020 if ((!(RD_HARPOON(p_port + hp_synctarg_0) & NARROW_SCSI)) && in FPT_busMstrSGDataXferStart()
5027 WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt); in FPT_busMstrSGDataXferStart()
5029 WR_HARPOON(p_port + hp_portctrl_0, in FPT_busMstrSGDataXferStart()
5031 WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH); in FPT_busMstrSGDataXferStart()
5034 WR_HARPOON(p_port + hp_page_ctrl, (unsigned char)(i | SCATTER_EN)); in FPT_busMstrSGDataXferStart()
5045 static void FPT_busMstrDataXferStart(u32 p_port, struct sccb *pcurrSCCB) in FPT_busMstrDataXferStart() argument
5062 HP_SETUP_ADDR_CNT(p_port, addr, count); in FPT_busMstrDataXferStart()
5066 WR_HARPOON(p_port + hp_portctrl_0, in FPT_busMstrDataXferStart()
5068 WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH); in FPT_busMstrDataXferStart()
5070 WR_HARPOON(p_port + hp_xfer_cmd, in FPT_busMstrDataXferStart()
5076 WR_HARPOON(p_port + hp_portctrl_0, in FPT_busMstrDataXferStart()
5078 WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH); in FPT_busMstrDataXferStart()
5080 WR_HARPOON(p_port + hp_xfer_cmd, in FPT_busMstrDataXferStart()
5098 static unsigned char FPT_busMstrTimeOut(u32 p_port) in FPT_busMstrTimeOut() argument
5104 WR_HARPOON(p_port + hp_sys_ctrl, HALT_MACH); in FPT_busMstrTimeOut()
5106 while ((!(RD_HARPOON(p_port + hp_ext_status) & CMD_ABORTED)) in FPT_busMstrTimeOut()
5110 if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) { in FPT_busMstrTimeOut()
5111 WR_HARPOON(p_port + hp_sys_ctrl, HARD_ABORT); in FPT_busMstrTimeOut()
5114 while ((RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) in FPT_busMstrTimeOut()
5119 RD_HARPOON(p_port + hp_int_status); /*Clear command complete */ in FPT_busMstrTimeOut()
5121 if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) { in FPT_busMstrTimeOut()
5461 u32 p_port; in FPT_scini() local
5468 p_port = currCard->ioPort; in FPT_scini()
5476 (unsigned char)FPT_utilEERead(p_port, SCAM_CONFIG / 2); in FPT_scini()
5478 char)(FPT_utilEERead(p_port, (SYSTEM_CONFIG / 2))); in FPT_scini()
5483 FPT_inisci(p_card, p_port, p_our_id); in FPT_scini()
5493 FPT_Wait1Second(p_port); in FPT_scini()
5496 while (!(FPT_scarb(p_port, INIT_SELTD))) { in FPT_scini()
5499 FPT_scsel(p_port); in FPT_scini()
5502 FPT_scxferc(p_port, SYNC_PTRN); in FPT_scini()
5503 FPT_scxferc(p_port, DOM_MSTR); in FPT_scini()
5505 FPT_scsendi(p_port, in FPT_scini()
5509 FPT_scbusf(p_port); in FPT_scini()
5512 FPT_sresb(p_port, p_card); in FPT_scini()
5513 FPT_Wait(p_port, TO_250ms); in FPT_scini()
5515 while (!(FPT_scarb(p_port, INIT_SELTD))) { in FPT_scini()
5518 FPT_scsel(p_port); in FPT_scini()
5521 FPT_scxferc(p_port, SYNC_PTRN); in FPT_scini()
5522 FPT_scxferc(p_port, DOM_MSTR); in FPT_scini()
5524 FPT_scsendi(p_port, in FPT_scini()
5529 FPT_scbusf(p_port); in FPT_scini()
5546 if (FPT_scsell(p_port, i)) { in FPT_scini()
5567 FPT_sresb(p_port, p_card); in FPT_scini()
5568 FPT_Wait1Second(p_port); in FPT_scini()
5569 while (!(FPT_scarb(p_port, INIT_SELTD))) { in FPT_scini()
5571 FPT_scsel(p_port); in FPT_scini()
5572 FPT_scasid(p_card, p_port); in FPT_scini()
5580 FPT_scwtsel(p_port); in FPT_scini()
5583 while (FPT_scxferc(p_port, 0x00) != SYNC_PTRN) { in FPT_scini()
5586 i = FPT_scxferc(p_port, 0x00); in FPT_scini()
5590 (p_port, in FPT_scini()
5592 i = FPT_scxferc(p_port, 0x00); in FPT_scini()
5594 k = FPT_scxferc(p_port, 0x00); in FPT_scini()
5607 p_port, in FPT_scini()
5623 if (!(FPT_scsendi(p_port, in FPT_scini()
5631 while (FPT_scxferc(p_port, 0x00) != CFG_CMPLT) { in FPT_scini()
5636 FPT_scbusf(p_port); in FPT_scini()
5638 FPT_scsavdi(p_card, p_port); in FPT_scini()
5666 static int FPT_scarb(u32 p_port, unsigned char p_sel_type) in FPT_scarb() argument
5670 while (RD_HARPOON(p_port + hp_scsisig) & (SCSI_SEL | SCSI_BSY)) { in FPT_scarb()
5673 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) in FPT_scarb()
5676 if (RD_HARPOON(p_port + hp_scsidata_0) != 00) in FPT_scarb()
5679 WR_HARPOON(p_port + hp_scsisig, in FPT_scarb()
5680 (RD_HARPOON(p_port + hp_scsisig) | SCSI_BSY)); in FPT_scarb()
5682 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) { in FPT_scarb()
5684 WR_HARPOON(p_port + hp_scsisig, in FPT_scarb()
5685 (RD_HARPOON(p_port + hp_scsisig) & in FPT_scarb()
5690 WR_HARPOON(p_port + hp_scsisig, in FPT_scarb()
5691 (RD_HARPOON(p_port + hp_scsisig) | SCSI_SEL)); in FPT_scarb()
5693 if (RD_HARPOON(p_port + hp_scsidata_0) != 00) { in FPT_scarb()
5695 WR_HARPOON(p_port + hp_scsisig, in FPT_scarb()
5696 (RD_HARPOON(p_port + hp_scsisig) & in FPT_scarb()
5702 WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0) in FPT_scarb()
5704 WR_HARPOON(p_port + hp_scsireset, SCAM_EN); in FPT_scarb()
5705 WR_HARPOON(p_port + hp_scsidata_0, 0x00); in FPT_scarb()
5706 WR_HARPOON(p_port + hp_scsidata_1, 0x00); in FPT_scarb()
5707 WR_HARPOON(p_port + hp_portctrl_0, SCSI_BUS_EN); in FPT_scarb()
5709 WR_HARPOON(p_port + hp_scsisig, in FPT_scarb()
5710 (RD_HARPOON(p_port + hp_scsisig) | SCSI_MSG)); in FPT_scarb()
5712 WR_HARPOON(p_port + hp_scsisig, (RD_HARPOON(p_port + hp_scsisig) in FPT_scarb()
5715 FPT_Wait(p_port, TO_250ms); in FPT_scarb()
5728 static void FPT_scbusf(u32 p_port) in FPT_scbusf() argument
5730 WR_HARPOON(p_port + hp_page_ctrl, in FPT_scbusf()
5731 (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE)); in FPT_scbusf()
5733 WR_HARPOON(p_port + hp_scsidata_0, 0x00); in FPT_scbusf()
5735 WR_HARPOON(p_port + hp_portctrl_0, (RD_HARPOON(p_port + hp_portctrl_0) in FPT_scbusf()
5738 WR_HARPOON(p_port + hp_scsisig, 0x00); in FPT_scbusf()
5740 WR_HARPOON(p_port + hp_scsireset, (RD_HARPOON(p_port + hp_scsireset) in FPT_scbusf()
5743 WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0) in FPT_scbusf()
5746 WRW_HARPOON((p_port + hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL)); in FPT_scbusf()
5748 WR_HARPOON(p_port + hp_page_ctrl, in FPT_scbusf()
5749 (RD_HARPOON(p_port + hp_page_ctrl) & ~G_INT_DISABLE)); in FPT_scbusf()
5760 static void FPT_scasid(unsigned char p_card, u32 p_port) in FPT_scasid() argument
5779 FPT_scxferc(p_port, SYNC_PTRN); in FPT_scasid()
5780 FPT_scxferc(p_port, ASSIGN_ID); in FPT_scasid()
5782 if (!(FPT_sciso(p_port, &temp_id_string[0]))) { in FPT_scasid()
5796 FPT_scxferc(p_port, MISC_CODE); in FPT_scasid()
5797 FPT_scxferc(p_port, CLR_P_FLAG); in FPT_scasid()
5803 FPT_scxferc(p_port, ID_0_7); in FPT_scasid()
5805 FPT_scxferc(p_port, ID_8_F); in FPT_scasid()
5813 FPT_scxferc(p_port, scam_id); in FPT_scasid()
5825 FPT_scxferc(p_port, SYNC_PTRN); in FPT_scasid()
5826 FPT_scxferc(p_port, CFG_CMPLT); in FPT_scasid()
5837 static void FPT_scsel(u32 p_port) in FPT_scsel() argument
5840 WR_HARPOON(p_port + hp_scsisig, SCSI_SEL); in FPT_scsel()
5841 FPT_scwiros(p_port, SCSI_MSG); in FPT_scsel()
5843 WR_HARPOON(p_port + hp_scsisig, (SCSI_SEL | SCSI_BSY)); in FPT_scsel()
5845 WR_HARPOON(p_port + hp_scsisig, in FPT_scsel()
5847 WR_HARPOON(p_port + hp_scsidata_0, in FPT_scsel()
5848 (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) | in FPT_scsel()
5851 WR_HARPOON(p_port + hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD)); in FPT_scsel()
5852 FPT_scwiros(p_port, SCSI_SEL); in FPT_scsel()
5854 WR_HARPOON(p_port + hp_scsidata_0, in FPT_scsel()
5855 (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) & in FPT_scsel()
5857 FPT_scwirod(p_port, BIT(6)); in FPT_scsel()
5859 WR_HARPOON(p_port + hp_scsisig, in FPT_scsel()
5871 static unsigned char FPT_scxferc(u32 p_port, unsigned char p_data) in FPT_scxferc() argument
5877 WR_HARPOON(p_port + hp_scsidata_0, curr_data); in FPT_scxferc()
5881 WR_HARPOON(p_port + hp_scsidata_0, curr_data); in FPT_scxferc()
5883 FPT_scwirod(p_port, BIT(7)); /*Wait for DB7 to be released. */ in FPT_scxferc()
5884 while (!(RD_HARPOON(p_port + hp_scsidata_0) & BIT(5))) ; in FPT_scxferc()
5886 ret_data = (RD_HARPOON(p_port + hp_scsidata_0) & (unsigned char)0x1F); in FPT_scxferc()
5890 WR_HARPOON(p_port + hp_scsidata_0, curr_data); in FPT_scxferc()
5894 WR_HARPOON(p_port + hp_scsidata_0, curr_data); in FPT_scxferc()
5896 FPT_scwirod(p_port, BIT(5)); /*Wait for DB5 to be released. */ in FPT_scxferc()
5901 WR_HARPOON(p_port + hp_scsidata_0, curr_data); in FPT_scxferc()
5905 WR_HARPOON(p_port + hp_scsidata_0, curr_data); in FPT_scxferc()
5907 FPT_scwirod(p_port, BIT(6)); /*Wait for DB6 to be released. */ in FPT_scxferc()
5921 static unsigned char FPT_scsendi(u32 p_port, unsigned char p_id_string[]) in FPT_scsendi() argument
5932 ret_data = FPT_scxferc(p_port, 00); in FPT_scsendi()
5936 ret_data = FPT_scxferc(p_port, 02); in FPT_scsendi()
5940 ret_data = FPT_scxferc(p_port, 01); in FPT_scsendi()
5972 static unsigned char FPT_sciso(u32 p_port, unsigned char p_id_string[]) in FPT_sciso() argument
5982 ret_data = FPT_scxferc(p_port, 0); in FPT_sciso()
6030 static void FPT_scwirod(u32 p_port, unsigned char p_data_bit) in FPT_scwirod() argument
6037 if (RD_HARPOON(p_port + hp_scsidata_0) & p_data_bit) in FPT_scwirod()
6057 static void FPT_scwiros(u32 p_port, unsigned char p_data_bit) in FPT_scwiros() argument
6064 if (RD_HARPOON(p_port + hp_scsisig) & p_data_bit) in FPT_scwiros()
6109 static unsigned char FPT_scsell(u32 p_port, unsigned char targ_id) in FPT_scsell() argument
6113 WR_HARPOON(p_port + hp_page_ctrl, in FPT_scsell()
6114 (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE)); in FPT_scsell()
6116 ARAM_ACCESS(p_port); in FPT_scsell()
6118 WR_HARPOON(p_port + hp_addstat, in FPT_scsell()
6119 (RD_HARPOON(p_port + hp_addstat) | SCAM_TIMER)); in FPT_scsell()
6120 WR_HARPOON(p_port + hp_seltimeout, TO_4ms); in FPT_scsell()
6122 for (i = p_port + CMD_STRT; i < p_port + CMD_STRT + 12; i += 2) { in FPT_scsell()
6127 WRW_HARPOON((p_port + hp_intstat), in FPT_scsell()
6130 WR_HARPOON(p_port + hp_select_id, targ_id); in FPT_scsell()
6132 WR_HARPOON(p_port + hp_portctrl_0, SCSI_PORT); in FPT_scsell()
6133 WR_HARPOON(p_port + hp_autostart_3, (SELECT | CMD_ONLY_STRT)); in FPT_scsell()
6134 WR_HARPOON(p_port + hp_scsictrl_0, (SEL_TAR | ENA_RESEL)); in FPT_scsell()
6136 while (!(RDW_HARPOON((p_port + hp_intstat)) & in FPT_scsell()
6140 if (RDW_HARPOON((p_port + hp_intstat)) & RESET) in FPT_scsell()
6141 FPT_Wait(p_port, TO_250ms); in FPT_scsell()
6143 DISABLE_AUTO(p_port); in FPT_scsell()
6145 WR_HARPOON(p_port + hp_addstat, in FPT_scsell()
6146 (RD_HARPOON(p_port + hp_addstat) & ~SCAM_TIMER)); in FPT_scsell()
6147 WR_HARPOON(p_port + hp_seltimeout, TO_290ms); in FPT_scsell()
6149 SGRAM_ACCESS(p_port); in FPT_scsell()
6151 if (RDW_HARPOON((p_port + hp_intstat)) & (RESET | TIMEOUT)) { in FPT_scsell()
6153 WRW_HARPOON((p_port + hp_intstat), in FPT_scsell()
6156 WR_HARPOON(p_port + hp_page_ctrl, in FPT_scsell()
6157 (RD_HARPOON(p_port + hp_page_ctrl) & in FPT_scsell()
6165 while (!(RDW_HARPOON((p_port + hp_intstat)) & BUS_FREE)) { in FPT_scsell()
6166 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) { in FPT_scsell()
6167 WR_HARPOON(p_port + hp_scsisig, in FPT_scsell()
6169 ACCEPT_MSG(p_port); in FPT_scsell()
6173 WRW_HARPOON((p_port + hp_intstat), CLR_ALL_INT_1); in FPT_scsell()
6175 WR_HARPOON(p_port + hp_page_ctrl, in FPT_scsell()
6176 (RD_HARPOON(p_port + hp_page_ctrl) & in FPT_scsell()
6191 static void FPT_scwtsel(u32 p_port) in FPT_scwtsel() argument
6193 while (!(RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) { in FPT_scwtsel()
6205 static void FPT_inisci(unsigned char p_card, u32 p_port, unsigned char p_our_id) in FPT_inisci() argument
6213 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) in FPT_inisci()
6239 FPT_utilEERead(p_port, in FPT_inisci()
6391 static void FPT_scsavdi(unsigned char p_card, u32 p_port) in FPT_scsavdi() argument
6399 sum_data += FPT_utilEERead(p_port, i); in FPT_scsavdi()
6402 FPT_utilEEWriteOnOff(p_port, 1); /* Enable write access to the EEPROM */ in FPT_scsavdi()
6404 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) in FPT_scsavdi()
6417 FPT_utilEEWrite(p_port, ee_data, in FPT_scsavdi()
6424 FPT_utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM / 2); in FPT_scsavdi()
6425 FPT_utilEEWriteOnOff(p_port, 0); /* Turn off write access */ in FPT_scsavdi()
6485 static void FPT_BusMasterInit(u32 p_port) in FPT_BusMasterInit() argument
6488 WR_HARPOON(p_port + hp_sys_ctrl, DRVR_RST); in FPT_BusMasterInit()
6489 WR_HARPOON(p_port + hp_sys_ctrl, 0x00); in FPT_BusMasterInit()
6491 WR_HARPOON(p_port + hp_host_blk_cnt, XFER_BLK64); in FPT_BusMasterInit()
6493 WR_HARPOON(p_port + hp_bm_ctrl, (BMCTRL_DEFAULT)); in FPT_BusMasterInit()
6495 WR_HARPOON(p_port + hp_ee_ctrl, (SCSI_TERM_ENA_H)); in FPT_BusMasterInit()
6497 RD_HARPOON(p_port + hp_int_status); /*Clear interrupts. */ in FPT_BusMasterInit()
6498 WR_HARPOON(p_port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT)); in FPT_BusMasterInit()
6499 WR_HARPOON(p_port + hp_page_ctrl, (RD_HARPOON(p_port + hp_page_ctrl) & in FPT_BusMasterInit()
6512 static void FPT_DiagEEPROM(u32 p_port) in FPT_DiagEEPROM() argument
6516 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD) in FPT_DiagEEPROM()
6521 temp = FPT_utilEERead(p_port, FW_SIGNATURE / 2); in FPT_DiagEEPROM()
6527 temp += FPT_utilEERead(p_port, index); in FPT_DiagEEPROM()
6531 if (temp == FPT_utilEERead(p_port, EEPROM_CHECK_SUM / 2)) { in FPT_DiagEEPROM()
6537 FPT_utilEEWriteOnOff(p_port, (unsigned char)1); in FPT_DiagEEPROM()
6541 FPT_utilEEWrite(p_port, 0x0000, index); in FPT_DiagEEPROM()
6546 FPT_utilEEWrite(p_port, 0x4641, FW_SIGNATURE / 2); in FPT_DiagEEPROM()
6548 FPT_utilEEWrite(p_port, 0x3920, MODEL_NUMB_0 / 2); in FPT_DiagEEPROM()
6550 FPT_utilEEWrite(p_port, 0x3033, MODEL_NUMB_2 / 2); in FPT_DiagEEPROM()
6552 FPT_utilEEWrite(p_port, 0x2020, MODEL_NUMB_4 / 2); in FPT_DiagEEPROM()
6554 FPT_utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG / 2); in FPT_DiagEEPROM()
6556 FPT_utilEEWrite(p_port, 0x0010, BIOS_CONFIG / 2); in FPT_DiagEEPROM()
6558 FPT_utilEEWrite(p_port, 0x0003, SCAM_CONFIG / 2); in FPT_DiagEEPROM()
6560 FPT_utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID / 2); in FPT_DiagEEPROM()
6563 FPT_utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN / 2); in FPT_DiagEEPROM()
6565 FPT_utilEEWrite(p_port, 0x0000, SEND_START_ENA / 2); in FPT_DiagEEPROM()
6567 FPT_utilEEWrite(p_port, 0x0000, DEVICE_ENABLE / 2); in FPT_DiagEEPROM()
6570 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01 / 2); in FPT_DiagEEPROM()
6572 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23 / 2); in FPT_DiagEEPROM()
6574 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45 / 2); in FPT_DiagEEPROM()
6576 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67 / 2); in FPT_DiagEEPROM()
6578 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89 / 2); in FPT_DiagEEPROM()
6580 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab / 2); in FPT_DiagEEPROM()
6582 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd / 2); in FPT_DiagEEPROM()
6584 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef / 2); in FPT_DiagEEPROM()
6587 FPT_utilEEWrite(p_port, 0x6C46, 64 / 2); /*PRODUCT ID */ in FPT_DiagEEPROM()
6589 FPT_utilEEWrite(p_port, 0x7361, 66 / 2); /* FlashPoint LT */ in FPT_DiagEEPROM()
6591 FPT_utilEEWrite(p_port, 0x5068, 68 / 2); in FPT_DiagEEPROM()
6593 FPT_utilEEWrite(p_port, 0x696F, 70 / 2); in FPT_DiagEEPROM()
6595 FPT_utilEEWrite(p_port, 0x746E, 72 / 2); in FPT_DiagEEPROM()
6597 FPT_utilEEWrite(p_port, 0x4C20, 74 / 2); in FPT_DiagEEPROM()
6599 FPT_utilEEWrite(p_port, 0x2054, 76 / 2); in FPT_DiagEEPROM()
6601 FPT_utilEEWrite(p_port, 0x2020, 78 / 2); in FPT_DiagEEPROM()
6605 FPT_utilEEWrite(p_port, (0x0700 + TYPE_CODE0), index); in FPT_DiagEEPROM()
6608 FPT_utilEEWrite(p_port, 0x5542, index); /*Vendor ID code */ in FPT_DiagEEPROM()
6611 FPT_utilEEWrite(p_port, 0x4C53, index); in FPT_DiagEEPROM()
6614 FPT_utilEEWrite(p_port, 0x474F, index); in FPT_DiagEEPROM()
6617 FPT_utilEEWrite(p_port, 0x4349, index); in FPT_DiagEEPROM()
6620 FPT_utilEEWrite(p_port, 0x5442, index); /*Vendor unique code */ in FPT_DiagEEPROM()
6623 FPT_utilEEWrite(p_port, 0x202D, index); in FPT_DiagEEPROM()
6626 FPT_utilEEWrite(p_port, 0x3339, index); in FPT_DiagEEPROM()
6629 FPT_utilEEWrite(p_port, 0x2030, index); /* 01234567 */ in FPT_DiagEEPROM()
6632 FPT_utilEEWrite(p_port, 0x5453, index); in FPT_DiagEEPROM()
6635 FPT_utilEEWrite(p_port, 0x5645, index); in FPT_DiagEEPROM()
6638 FPT_utilEEWrite(p_port, 0x2045, index); in FPT_DiagEEPROM()
6641 FPT_utilEEWrite(p_port, 0x202F, index); in FPT_DiagEEPROM()
6644 FPT_utilEEWrite(p_port, 0x4F4A, index); in FPT_DiagEEPROM()
6647 FPT_utilEEWrite(p_port, 0x204E, index); in FPT_DiagEEPROM()
6650 FPT_utilEEWrite(p_port, 0x3539, index); in FPT_DiagEEPROM()
6653 FPT_utilEEWrite(p_port, temp, EEPROM_CHECK_SUM / 2); in FPT_DiagEEPROM()
6655 FPT_utilEEWriteOnOff(p_port, (unsigned char)0); in FPT_DiagEEPROM()
7205 static void FPT_Wait1Second(u32 p_port) in FPT_Wait1Second() argument
7211 FPT_Wait(p_port, TO_250ms); in FPT_Wait1Second()
7213 if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST)) in FPT_Wait1Second()
7216 if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) in FPT_Wait1Second()
7229 static void FPT_Wait(u32 p_port, unsigned char p_delay) in FPT_Wait() argument
7234 old_timer = RD_HARPOON(p_port + hp_seltimeout); in FPT_Wait()
7236 green_flag = RD_HARPOON(p_port + hp_clkctrl_0); in FPT_Wait()
7237 WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT); in FPT_Wait()
7239 WR_HARPOON(p_port + hp_seltimeout, p_delay); in FPT_Wait()
7240 WRW_HARPOON((p_port + hp_intstat), TIMEOUT); in FPT_Wait()
7241 WRW_HARPOON((p_port + hp_intena), (FPT_default_intena & ~TIMEOUT)); in FPT_Wait()
7243 WR_HARPOON(p_port + hp_portctrl_0, in FPT_Wait()
7244 (RD_HARPOON(p_port + hp_portctrl_0) | START_TO)); in FPT_Wait()
7246 while (!(RDW_HARPOON((p_port + hp_intstat)) & TIMEOUT)) { in FPT_Wait()
7248 if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST)) in FPT_Wait()
7251 if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) in FPT_Wait()
7255 WR_HARPOON(p_port + hp_portctrl_0, in FPT_Wait()
7256 (RD_HARPOON(p_port + hp_portctrl_0) & ~START_TO)); in FPT_Wait()
7258 WRW_HARPOON((p_port + hp_intstat), TIMEOUT); in FPT_Wait()
7259 WRW_HARPOON((p_port + hp_intena), FPT_default_intena); in FPT_Wait()
7261 WR_HARPOON(p_port + hp_clkctrl_0, green_flag); in FPT_Wait()
7263 WR_HARPOON(p_port + hp_seltimeout, old_timer); in FPT_Wait()
7275 static void FPT_utilEEWriteOnOff(u32 p_port, unsigned char p_mode) in FPT_utilEEWriteOnOff() argument
7280 (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) & in FPT_utilEEWriteOnOff()
7285 FPT_utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR); in FPT_utilEEWriteOnOff()
7289 FPT_utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR); in FPT_utilEEWriteOnOff()
7291 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ in FPT_utilEEWriteOnOff()
7292 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */ in FPT_utilEEWriteOnOff()
7304 static void FPT_utilEEWrite(u32 p_port, unsigned short ee_data, in FPT_utilEEWrite() argument
7313 char)((RD_HARPOON(p_port + hp_ee_ctrl) & in FPT_utilEEWrite()
7316 FPT_utilEESendCmdAddr(p_port, EE_WRITE, ee_addr); in FPT_utilEEWrite()
7327 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEWrite()
7328 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEWrite()
7330 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEWrite()
7331 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEWrite()
7333 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEWrite()
7334 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEWrite()
7337 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); in FPT_utilEEWrite()
7339 FPT_Wait(p_port, TO_10ms); in FPT_utilEEWrite()
7341 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to EEPROM */ in FPT_utilEEWrite()
7342 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /* Turn off CS */ in FPT_utilEEWrite()
7343 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /* Turn off Master Select */ in FPT_utilEEWrite()
7355 static unsigned short FPT_utilEERead(u32 p_port, in FPT_utilEERead() argument
7361 ee_data1 = FPT_utilEEReadOrg(p_port, ee_addr); in FPT_utilEERead()
7363 ee_data2 = FPT_utilEEReadOrg(p_port, ee_addr); in FPT_utilEERead()
7385 static unsigned short FPT_utilEEReadOrg(u32 p_port, unsigned short ee_addr) in FPT_utilEEReadOrg() argument
7393 char)((RD_HARPOON(p_port + hp_ee_ctrl) & in FPT_utilEEReadOrg()
7396 FPT_utilEESendCmdAddr(p_port, EE_READ, ee_addr); in FPT_utilEEReadOrg()
7404 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEReadOrg()
7405 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEReadOrg()
7407 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEReadOrg()
7408 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEEReadOrg()
7412 if (RD_HARPOON(p_port + hp_ee_ctrl) & SEE_DI) in FPT_utilEEReadOrg()
7417 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */ in FPT_utilEEReadOrg()
7418 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */ in FPT_utilEEReadOrg()
7432 static void FPT_utilEESendCmdAddr(u32 p_port, unsigned char ee_cmd, in FPT_utilEESendCmdAddr() argument
7441 (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) & in FPT_utilEESendCmdAddr()
7445 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7448 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7457 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7458 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7460 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7461 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7463 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7464 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7480 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7481 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7483 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7484 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7486 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()
7487 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); in FPT_utilEESendCmdAddr()