Lines Matching refs:p_port

749 #define ARAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
750 (RD_HARPOON(p_port+hp_page_ctrl) | SGRAM_ARAM)))
752 #define SGRAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
753 (RD_HARPOON(p_port+hp_page_ctrl) & ~SGRAM_ARAM)))
755 #define MDISABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
756 (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE)))
758 #define MENABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
759 (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)))
771 static void FPT_sssyncv(u32 p_port, unsigned char p_id,
775 static void FPT_sxfrp(u32 p_port, unsigned char p_card);
808 static void FPT_Wait1Second(u32 p_port);
809 static void FPT_Wait(u32 p_port, unsigned char p_delay);
810 static void FPT_utilEEWriteOnOff(u32 p_port, unsigned char p_mode);
811 static void FPT_utilEEWrite(u32 p_port, unsigned short ee_data,
813 static unsigned short FPT_utilEERead(u32 p_port,
815 static unsigned short FPT_utilEEReadOrg(u32 p_port,
817 static void FPT_utilEESendCmdAddr(u32 p_port, unsigned char ee_cmd,
830 static void FPT_phaseBusFree(u32 p_port, unsigned char p_card);
833 static void FPT_BusMasterInit(u32 p_port);
834 static void FPT_DiagEEPROM(u32 p_port);
846 static unsigned char FPT_SccbMgr_bad_isr(u32 p_port,
860 static int FPT_scarb(u32 p_port, unsigned char p_sel_type);
861 static void FPT_scbusf(u32 p_port);
862 static void FPT_scsel(u32 p_port);
863 static void FPT_scasid(unsigned char p_card, u32 p_port);
864 static unsigned char FPT_scxferc(u32 p_port, unsigned char p_data);
865 static unsigned char FPT_scsendi(u32 p_port,
867 static unsigned char FPT_sciso(u32 p_port,
869 static void FPT_scwirod(u32 p_port, unsigned char p_data_bit);
870 static void FPT_scwiros(u32 p_port, unsigned char p_data_bit);
872 static unsigned char FPT_scsell(u32 p_port, unsigned char targ_id);
873 static void FPT_scwtsel(u32 p_port);
874 static void FPT_inisci(unsigned char p_card, u32 p_port,
876 static void FPT_scsavdi(unsigned char p_card, u32 p_port);
880 static void FPT_autoCmdCmplt(u32 p_port, unsigned char p_card);
881 static void FPT_autoLoadDefaultMap(u32 p_port);
1960 static unsigned char FPT_SccbMgr_bad_isr(u32 p_port, unsigned char p_card,
1968 if (RD_HARPOON(p_port + hp_ext_status) &
1973 FPT_hostDataXferAbort(p_port, p_card,
1977 if (RD_HARPOON(p_port + hp_pci_stat_cfg) & REC_MASTER_ABORT)
1979 WR_HARPOON(p_port + hp_pci_stat_cfg,
1980 (RD_HARPOON(p_port + hp_pci_stat_cfg) &
1983 WR_HARPOON(p_port + hp_host_blk_cnt, 0x00);
1993 FPT_sxfrp(p_port, p_card);
1995 temp = (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) &
1997 WR_HARPOON(p_port + hp_ee_ctrl,
1999 WR_HARPOON(p_port + hp_ee_ctrl, temp);
2002 (RDW_HARPOON((p_port + hp_intstat)) &
2004 FPT_phaseDecode(p_port, p_card);
2011 WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT);
2012 WR_HARPOON(p_port + hp_sys_ctrl, 0x00);
2017 FPT_hostDataXferAbort(p_port, p_card,
2021 DISABLE_AUTO(p_port);
2023 FPT_sresb(p_port, p_card);
2025 while (RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST) {
2033 (unsigned char)FPT_utilEERead(p_port,
2037 FPT_XbowInit(p_port, ScamFlg);
2046 WRW_HARPOON((p_port + hp_intstat), FIFO);
2049 FPT_sxfrp(p_port, p_card);
2054 DISABLE_AUTO(p_port);
2056 WRW_HARPOON((p_port + hp_intstat),
2081 FPT_sssyncv(p_port, pCurrCard->currentSCCB->TargID, NARROW_SCSI,
2090 FPT_scarb(p_port, LEVEL2_TAR);
2091 FPT_scsel(p_port);
2092 FPT_scasid(p_card, p_port);
2094 FPT_scbusf(p_port);
2096 WRW_HARPOON((p_port + hp_intstat), SCAM_SEL);
3504 static void FPT_sssyncv(u32 p_port, unsigned char p_id,
3564 WR_HARPOON(p_port + hp_synctarg_base + index, p_sync_value);
3693 static void FPT_sxfrp(u32 p_port, unsigned char p_card)
3697 DISABLE_AUTO(p_port);
3701 FPT_hostDataXferAbort(p_port, p_card,
3709 if (RDW_HARPOON((p_port + hp_intstat)) &
3713 WR_HARPOON(p_port + hp_xfercnt_0, 0x00);
3715 curr_phz = RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ;
3717 WRW_HARPOON((p_port + hp_intstat), XFER_CNT_0);
3719 WR_HARPOON(p_port + hp_scsisig, curr_phz);
3721 while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET)) &&
3723 (RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ)))
3726 WR_HARPOON(p_port + hp_portctrl_0,
3729 if (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) {
3730 RD_HARPOON(p_port + hp_fifodata_0);
3733 WR_HARPOON(p_port + hp_portctrl_0,
3735 if (RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY) {
3736 WR_HARPOON(p_port + hp_fifodata_0, 0xFA);
3741 while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) {
3742 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ)
3746 WR_HARPOON(p_port + hp_portctrl_0,
3748 while (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) {
3749 RD_HARPOON(p_port + hp_fifodata_0);
3752 if (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) {
3753 WR_HARPOON(p_port + hp_autostart_0,
3755 while (!(RDW_HARPOON((p_port + hp_intstat)) & AUTO_INT)) {
3758 if (RDW_HARPOON((p_port + hp_intstat)) &
3761 (RDW_HARPOON((p_port + hp_intstat)) &
3950 static void FPT_phaseDecode(u32 p_port, unsigned char p_card)
3955 DISABLE_AUTO(p_port);
3958 (unsigned char)(RD_HARPOON(p_port + hp_scsisig) & S_SCSI_PHZ);
3962 (*phase) (p_port, p_card); /* Call the correct phase func */
4058 static void FPT_phaseCommand(u32 p_port, unsigned char p_card)
4072 WR_HARPOON(p_port + hp_scsisig, 0x00);
4074 ARAM_ACCESS(p_port);
4076 cdb_reg = p_port + CMD_STRT;
4093 WR_HARPOON(p_port + hp_portctrl_0, (SCSI_PORT));
4097 WR_HARPOON(p_port + hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT));
4098 SGRAM_ACCESS(p_port);
4509 static void FPT_autoLoadDefaultMap(u32 p_port)
4513 ARAM_ACCESS(p_port);
4514 map_addr = p_port + hp_aramBase;
4603 SGRAM_ACCESS(p_port);
4615 static void FPT_autoCmdCmplt(u32 p_port, unsigned char p_card)
4622 status_byte = RD_HARPOON(p_port + hp_gp_reg_0);
4921 static void FPT_busMstrSGDataXferStart(u32 p_port, struct sccb *pcurrSCCB)
4939 i = (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) &
4942 WR_HARPOON(p_port + hp_page_ctrl, i);
4962 WR_HARP32(p_port, reg_offset, addr);
4965 WR_HARP32(p_port, reg_offset, count);
4976 WR_HARPOON(p_port + hp_sg_addr, (sg_count << 4));
4980 WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt);
4982 WR_HARPOON(p_port + hp_portctrl_0,
4984 WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH);
4989 if ((!(RD_HARPOON(p_port + hp_synctarg_0) & NARROW_SCSI)) &&
4996 WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt);
4998 WR_HARPOON(p_port + hp_portctrl_0,
5000 WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH);
5003 WR_HARPOON(p_port + hp_page_ctrl, (unsigned char)(i | SCATTER_EN));
5014 static void FPT_busMstrDataXferStart(u32 p_port, struct sccb *pcurrSCCB)
5031 HP_SETUP_ADDR_CNT(p_port, addr, count);
5035 WR_HARPOON(p_port + hp_portctrl_0,
5037 WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH);
5039 WR_HARPOON(p_port + hp_xfer_cmd,
5045 WR_HARPOON(p_port + hp_portctrl_0,
5047 WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH);
5049 WR_HARPOON(p_port + hp_xfer_cmd,
5067 static unsigned char FPT_busMstrTimeOut(u32 p_port)
5073 WR_HARPOON(p_port + hp_sys_ctrl, HALT_MACH);
5075 while ((!(RD_HARPOON(p_port + hp_ext_status) & CMD_ABORTED))
5079 if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) {
5080 WR_HARPOON(p_port + hp_sys_ctrl, HARD_ABORT);
5083 while ((RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY)
5088 RD_HARPOON(p_port + hp_int_status); /*Clear command complete */
5090 if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) {
5430 u32 p_port;
5437 p_port = currCard->ioPort;
5445 (unsigned char)FPT_utilEERead(p_port, SCAM_CONFIG / 2);
5447 char)(FPT_utilEERead(p_port, (SYSTEM_CONFIG / 2)));
5452 FPT_inisci(p_card, p_port, p_our_id);
5458 FPT_Wait1Second(p_port);
5460 FPT_Wait(p_port, TO_250ms); */
5462 FPT_Wait1Second(p_port);
5465 while (!(FPT_scarb(p_port, INIT_SELTD))) {
5468 FPT_scsel(p_port);
5471 FPT_scxferc(p_port, SYNC_PTRN);
5472 FPT_scxferc(p_port, DOM_MSTR);
5474 FPT_scsendi(p_port,
5478 FPT_scbusf(p_port);
5481 FPT_sresb(p_port, p_card);
5482 FPT_Wait(p_port, TO_250ms);
5484 while (!(FPT_scarb(p_port, INIT_SELTD))) {
5487 FPT_scsel(p_port);
5490 FPT_scxferc(p_port, SYNC_PTRN);
5491 FPT_scxferc(p_port, DOM_MSTR);
5493 FPT_scsendi(p_port,
5498 FPT_scbusf(p_port);
5515 if (FPT_scsell(p_port, i)) {
5536 FPT_sresb(p_port, p_card);
5537 FPT_Wait1Second(p_port);
5538 while (!(FPT_scarb(p_port, INIT_SELTD))) {
5540 FPT_scsel(p_port);
5541 FPT_scasid(p_card, p_port);
5549 FPT_scwtsel(p_port);
5552 while (FPT_scxferc(p_port, 0x00) != SYNC_PTRN) {
5555 i = FPT_scxferc(p_port, 0x00);
5559 (p_port,
5561 i = FPT_scxferc(p_port, 0x00);
5563 k = FPT_scxferc(p_port, 0x00);
5576 p_port,
5592 if (!(FPT_scsendi(p_port,
5600 while (FPT_scxferc(p_port, 0x00) != CFG_CMPLT) {
5605 FPT_scbusf(p_port);
5607 FPT_scsavdi(p_card, p_port);
5635 static int FPT_scarb(u32 p_port, unsigned char p_sel_type)
5639 while (RD_HARPOON(p_port + hp_scsisig) & (SCSI_SEL | SCSI_BSY)) {
5642 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL)
5645 if (RD_HARPOON(p_port + hp_scsidata_0) != 00)
5648 WR_HARPOON(p_port + hp_scsisig,
5649 (RD_HARPOON(p_port + hp_scsisig) | SCSI_BSY));
5651 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) {
5653 WR_HARPOON(p_port + hp_scsisig,
5654 (RD_HARPOON(p_port + hp_scsisig) &
5659 WR_HARPOON(p_port + hp_scsisig,
5660 (RD_HARPOON(p_port + hp_scsisig) | SCSI_SEL));
5662 if (RD_HARPOON(p_port + hp_scsidata_0) != 00) {
5664 WR_HARPOON(p_port + hp_scsisig,
5665 (RD_HARPOON(p_port + hp_scsisig) &
5671 WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0)
5673 WR_HARPOON(p_port + hp_scsireset, SCAM_EN);
5674 WR_HARPOON(p_port + hp_scsidata_0, 0x00);
5675 WR_HARPOON(p_port + hp_scsidata_1, 0x00);
5676 WR_HARPOON(p_port + hp_portctrl_0, SCSI_BUS_EN);
5678 WR_HARPOON(p_port + hp_scsisig,
5679 (RD_HARPOON(p_port + hp_scsisig) | SCSI_MSG));
5681 WR_HARPOON(p_port + hp_scsisig, (RD_HARPOON(p_port + hp_scsisig)
5684 FPT_Wait(p_port, TO_250ms);
5697 static void FPT_scbusf(u32 p_port)
5699 WR_HARPOON(p_port + hp_page_ctrl,
5700 (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE));
5702 WR_HARPOON(p_port + hp_scsidata_0, 0x00);
5704 WR_HARPOON(p_port + hp_portctrl_0, (RD_HARPOON(p_port + hp_portctrl_0)
5707 WR_HARPOON(p_port + hp_scsisig, 0x00);
5709 WR_HARPOON(p_port + hp_scsireset, (RD_HARPOON(p_port + hp_scsireset)
5712 WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0)
5715 WRW_HARPOON((p_port + hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL));
5717 WR_HARPOON(p_port + hp_page_ctrl,
5718 (RD_HARPOON(p_port + hp_page_ctrl) & ~G_INT_DISABLE));
5729 static void FPT_scasid(unsigned char p_card, u32 p_port)
5748 FPT_scxferc(p_port, SYNC_PTRN);
5749 FPT_scxferc(p_port, ASSIGN_ID);
5751 if (!(FPT_sciso(p_port, &temp_id_string[0]))) {
5765 FPT_scxferc(p_port, MISC_CODE);
5766 FPT_scxferc(p_port, CLR_P_FLAG);
5772 FPT_scxferc(p_port, ID_0_7);
5774 FPT_scxferc(p_port, ID_8_F);
5782 FPT_scxferc(p_port, scam_id);
5794 FPT_scxferc(p_port, SYNC_PTRN);
5795 FPT_scxferc(p_port, CFG_CMPLT);
5806 static void FPT_scsel(u32 p_port)
5809 WR_HARPOON(p_port + hp_scsisig, SCSI_SEL);
5810 FPT_scwiros(p_port, SCSI_MSG);
5812 WR_HARPOON(p_port + hp_scsisig, (SCSI_SEL | SCSI_BSY));
5814 WR_HARPOON(p_port + hp_scsisig,
5816 WR_HARPOON(p_port + hp_scsidata_0,
5817 (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) |
5820 WR_HARPOON(p_port + hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD));
5821 FPT_scwiros(p_port, SCSI_SEL);
5823 WR_HARPOON(p_port + hp_scsidata_0,
5824 (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) &
5826 FPT_scwirod(p_port, BIT(6));
5828 WR_HARPOON(p_port + hp_scsisig,
5840 static unsigned char FPT_scxferc(u32 p_port, unsigned char p_data)
5846 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5850 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5852 FPT_scwirod(p_port, BIT(7)); /*Wait for DB7 to be released. */
5853 while (!(RD_HARPOON(p_port + hp_scsidata_0) & BIT(5))) ;
5855 ret_data = (RD_HARPOON(p_port + hp_scsidata_0) & (unsigned char)0x1F);
5859 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5863 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5865 FPT_scwirod(p_port, BIT(5)); /*Wait for DB5 to be released. */
5870 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5874 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5876 FPT_scwirod(p_port, BIT(6)); /*Wait for DB6 to be released. */
5890 static unsigned char FPT_scsendi(u32 p_port, unsigned char p_id_string[])
5901 ret_data = FPT_scxferc(p_port, 00);
5905 ret_data = FPT_scxferc(p_port, 02);
5909 ret_data = FPT_scxferc(p_port, 01);
5941 static unsigned char FPT_sciso(u32 p_port, unsigned char p_id_string[])
5951 ret_data = FPT_scxferc(p_port, 0);
5970 FPT_scxferc(p_port, SYNC_PTRN);
5971 FPT_scxferc(p_port, ASSIGN_ID);
5999 static void FPT_scwirod(u32 p_port, unsigned char p_data_bit)
6006 if (RD_HARPOON(p_port + hp_scsidata_0) & p_data_bit)
6026 static void FPT_scwiros(u32 p_port, unsigned char p_data_bit)
6033 if (RD_HARPOON(p_port + hp_scsisig) & p_data_bit)
6078 static unsigned char FPT_scsell(u32 p_port, unsigned char targ_id)
6082 WR_HARPOON(p_port + hp_page_ctrl,
6083 (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE));
6085 ARAM_ACCESS(p_port);
6087 WR_HARPOON(p_port + hp_addstat,
6088 (RD_HARPOON(p_port + hp_addstat) | SCAM_TIMER));
6089 WR_HARPOON(p_port + hp_seltimeout, TO_4ms);
6091 for (i = p_port + CMD_STRT; i < p_port + CMD_STRT + 12; i += 2) {
6096 WRW_HARPOON((p_port + hp_intstat),
6099 WR_HARPOON(p_port + hp_select_id, targ_id);
6101 WR_HARPOON(p_port + hp_portctrl_0, SCSI_PORT);
6102 WR_HARPOON(p_port + hp_autostart_3, (SELECT | CMD_ONLY_STRT));
6103 WR_HARPOON(p_port + hp_scsictrl_0, (SEL_TAR | ENA_RESEL));
6105 while (!(RDW_HARPOON((p_port + hp_intstat)) &
6109 if (RDW_HARPOON((p_port + hp_intstat)) & RESET)
6110 FPT_Wait(p_port, TO_250ms);
6112 DISABLE_AUTO(p_port);
6114 WR_HARPOON(p_port + hp_addstat,
6115 (RD_HARPOON(p_port + hp_addstat) & ~SCAM_TIMER));
6116 WR_HARPOON(p_port + hp_seltimeout, TO_290ms);
6118 SGRAM_ACCESS(p_port);
6120 if (RDW_HARPOON((p_port + hp_intstat)) & (RESET | TIMEOUT)) {
6122 WRW_HARPOON((p_port + hp_intstat),
6125 WR_HARPOON(p_port + hp_page_ctrl,
6126 (RD_HARPOON(p_port + hp_page_ctrl) &
6134 while (!(RDW_HARPOON((p_port + hp_intstat)) & BUS_FREE)) {
6135 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) {
6136 WR_HARPOON(p_port + hp_scsisig,
6138 ACCEPT_MSG(p_port);
6142 WRW_HARPOON((p_port + hp_intstat), CLR_ALL_INT_1);
6144 WR_HARPOON(p_port + hp_page_ctrl,
6145 (RD_HARPOON(p_port + hp_page_ctrl) &
6160 static void FPT_scwtsel(u32 p_port)
6162 while (!(RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) {
6174 static void FPT_inisci(unsigned char p_card, u32 p_port, unsigned char p_our_id)
6182 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD)
6208 FPT_utilEERead(p_port,
6360 static void FPT_scsavdi(unsigned char p_card, u32 p_port)
6368 sum_data += FPT_utilEERead(p_port, i);
6371 FPT_utilEEWriteOnOff(p_port, 1); /* Enable write access to the EEPROM */
6373 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD)
6386 FPT_utilEEWrite(p_port, ee_data,
6393 FPT_utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM / 2);
6394 FPT_utilEEWriteOnOff(p_port, 0); /* Turn off write access */
6454 static void FPT_BusMasterInit(u32 p_port)
6457 WR_HARPOON(p_port + hp_sys_ctrl, DRVR_RST);
6458 WR_HARPOON(p_port + hp_sys_ctrl, 0x00);
6460 WR_HARPOON(p_port + hp_host_blk_cnt, XFER_BLK64);
6462 WR_HARPOON(p_port + hp_bm_ctrl, (BMCTRL_DEFAULT));
6464 WR_HARPOON(p_port + hp_ee_ctrl, (SCSI_TERM_ENA_H));
6466 RD_HARPOON(p_port + hp_int_status); /*Clear interrupts. */
6467 WR_HARPOON(p_port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT));
6468 WR_HARPOON(p_port + hp_page_ctrl, (RD_HARPOON(p_port + hp_page_ctrl) &
6481 static void FPT_DiagEEPROM(u32 p_port)
6485 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD)
6490 temp = FPT_utilEERead(p_port, FW_SIGNATURE / 2);
6496 temp += FPT_utilEERead(p_port, index);
6500 if (temp == FPT_utilEERead(p_port, EEPROM_CHECK_SUM / 2)) {
6506 FPT_utilEEWriteOnOff(p_port, (unsigned char)1);
6510 FPT_utilEEWrite(p_port, 0x0000, index);
6515 FPT_utilEEWrite(p_port, 0x4641, FW_SIGNATURE / 2);
6517 FPT_utilEEWrite(p_port, 0x3920, MODEL_NUMB_0 / 2);
6519 FPT_utilEEWrite(p_port, 0x3033, MODEL_NUMB_2 / 2);
6521 FPT_utilEEWrite(p_port, 0x2020, MODEL_NUMB_4 / 2);
6523 FPT_utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG / 2);
6525 FPT_utilEEWrite(p_port, 0x0010, BIOS_CONFIG / 2);
6527 FPT_utilEEWrite(p_port, 0x0003, SCAM_CONFIG / 2);
6529 FPT_utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID / 2);
6532 FPT_utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN / 2);
6534 FPT_utilEEWrite(p_port, 0x0000, SEND_START_ENA / 2);
6536 FPT_utilEEWrite(p_port, 0x0000, DEVICE_ENABLE / 2);
6539 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01 / 2);
6541 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23 / 2);
6543 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45 / 2);
6545 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67 / 2);
6547 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89 / 2);
6549 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab / 2);
6551 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd / 2);
6553 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef / 2);
6556 FPT_utilEEWrite(p_port, 0x6C46, 64 / 2); /*PRODUCT ID */
6558 FPT_utilEEWrite(p_port, 0x7361, 66 / 2); /* FlashPoint LT */
6560 FPT_utilEEWrite(p_port, 0x5068, 68 / 2);
6562 FPT_utilEEWrite(p_port, 0x696F, 70 / 2);
6564 FPT_utilEEWrite(p_port, 0x746E, 72 / 2);
6566 FPT_utilEEWrite(p_port, 0x4C20, 74 / 2);
6568 FPT_utilEEWrite(p_port, 0x2054, 76 / 2);
6570 FPT_utilEEWrite(p_port, 0x2020, 78 / 2);
6574 FPT_utilEEWrite(p_port, (0x0700 + TYPE_CODE0), index);
6577 FPT_utilEEWrite(p_port, 0x5542, index); /*Vendor ID code */
6580 FPT_utilEEWrite(p_port, 0x4C53, index);
6583 FPT_utilEEWrite(p_port, 0x474F, index);
6586 FPT_utilEEWrite(p_port, 0x4349, index);
6589 FPT_utilEEWrite(p_port, 0x5442, index); /*Vendor unique code */
6592 FPT_utilEEWrite(p_port, 0x202D, index);
6595 FPT_utilEEWrite(p_port, 0x3339, index);
6598 FPT_utilEEWrite(p_port, 0x2030, index); /* 01234567 */
6601 FPT_utilEEWrite(p_port, 0x5453, index);
6604 FPT_utilEEWrite(p_port, 0x5645, index);
6607 FPT_utilEEWrite(p_port, 0x2045, index);
6610 FPT_utilEEWrite(p_port, 0x202F, index);
6613 FPT_utilEEWrite(p_port, 0x4F4A, index);
6616 FPT_utilEEWrite(p_port, 0x204E, index);
6619 FPT_utilEEWrite(p_port, 0x3539, index);
6622 FPT_utilEEWrite(p_port, temp, EEPROM_CHECK_SUM / 2);
6624 FPT_utilEEWriteOnOff(p_port, (unsigned char)0);
7174 static void FPT_Wait1Second(u32 p_port)
7180 FPT_Wait(p_port, TO_250ms);
7182 if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST))
7185 if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL))
7198 static void FPT_Wait(u32 p_port, unsigned char p_delay)
7203 old_timer = RD_HARPOON(p_port + hp_seltimeout);
7205 green_flag = RD_HARPOON(p_port + hp_clkctrl_0);
7206 WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT);
7208 WR_HARPOON(p_port + hp_seltimeout, p_delay);
7209 WRW_HARPOON((p_port + hp_intstat), TIMEOUT);
7210 WRW_HARPOON((p_port + hp_intena), (FPT_default_intena & ~TIMEOUT));
7212 WR_HARPOON(p_port + hp_portctrl_0,
7213 (RD_HARPOON(p_port + hp_portctrl_0) | START_TO));
7215 while (!(RDW_HARPOON((p_port + hp_intstat)) & TIMEOUT)) {
7217 if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST))
7220 if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL))
7224 WR_HARPOON(p_port + hp_portctrl_0,
7225 (RD_HARPOON(p_port + hp_portctrl_0) & ~START_TO));
7227 WRW_HARPOON((p_port + hp_intstat), TIMEOUT);
7228 WRW_HARPOON((p_port + hp_intena), FPT_default_intena);
7230 WR_HARPOON(p_port + hp_clkctrl_0, green_flag);
7232 WR_HARPOON(p_port + hp_seltimeout, old_timer);
7244 static void FPT_utilEEWriteOnOff(u32 p_port, unsigned char p_mode)
7249 (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) &
7254 FPT_utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR);
7258 FPT_utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR);
7260 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */
7261 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */
7273 static void FPT_utilEEWrite(u32 p_port, unsigned short ee_data,
7282 char)((RD_HARPOON(p_port + hp_ee_ctrl) &
7285 FPT_utilEESendCmdAddr(p_port, EE_WRITE, ee_addr);
7296 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7297 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7299 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7300 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7302 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7303 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7306 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS));
7308 FPT_Wait(p_port, TO_10ms);
7310 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to EEPROM */
7311 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /* Turn off CS */
7312 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /* Turn off Master Select */
7324 static unsigned short FPT_utilEERead(u32 p_port,
7330 ee_data1 = FPT_utilEEReadOrg(p_port, ee_addr);
7332 ee_data2 = FPT_utilEEReadOrg(p_port, ee_addr);
7354 static unsigned short FPT_utilEEReadOrg(u32 p_port, unsigned short ee_addr)
7362 char)((RD_HARPOON(p_port + hp_ee_ctrl) &
7365 FPT_utilEESendCmdAddr(p_port, EE_READ, ee_addr);
7373 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7374 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7376 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7377 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7381 if (RD_HARPOON(p_port + hp_ee_ctrl) & SEE_DI)
7386 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */
7387 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */
7401 static void FPT_utilEESendCmdAddr(u32 p_port, unsigned char ee_cmd,
7410 (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) &
7414 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7417 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7426 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7427 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7429 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7430 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7432 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7433 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7449 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7450 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7452 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7453 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7455 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7456 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);