Lines Matching refs:p_port

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