• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/scsi/

Lines Matching defs:p_port

771 #define ARAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
772 (RD_HARPOON(p_port+hp_page_ctrl) | SGRAM_ARAM)))
774 #define SGRAM_ACCESS(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
775 (RD_HARPOON(p_port+hp_page_ctrl) & ~SGRAM_ARAM)))
777 #define MDISABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
778 (RD_HARPOON(p_port+hp_page_ctrl) | G_INT_DISABLE)))
780 #define MENABLE_INT(p_port) (WR_HARPOON(p_port+hp_page_ctrl, \
781 (RD_HARPOON(p_port+hp_page_ctrl) & ~G_INT_DISABLE)))
793 static void FPT_sssyncv(unsigned long p_port, unsigned char p_id,
797 static void FPT_sxfrp(unsigned long p_port, unsigned char p_card);
830 static void FPT_Wait1Second(unsigned long p_port);
831 static void FPT_Wait(unsigned long p_port, unsigned char p_delay);
832 static void FPT_utilEEWriteOnOff(unsigned long p_port, unsigned char p_mode);
833 static void FPT_utilEEWrite(unsigned long p_port, unsigned short ee_data,
835 static unsigned short FPT_utilEERead(unsigned long p_port,
837 static unsigned short FPT_utilEEReadOrg(unsigned long p_port,
839 static void FPT_utilEESendCmdAddr(unsigned long p_port, unsigned char ee_cmd,
852 static void FPT_phaseBusFree(unsigned long p_port, unsigned char p_card);
855 static void FPT_BusMasterInit(unsigned long p_port);
856 static void FPT_DiagEEPROM(unsigned long p_port);
868 static unsigned char FPT_SccbMgr_bad_isr(unsigned long p_port,
882 static int FPT_scarb(unsigned long p_port, unsigned char p_sel_type);
883 static void FPT_scbusf(unsigned long p_port);
884 static void FPT_scsel(unsigned long p_port);
885 static void FPT_scasid(unsigned char p_card, unsigned long p_port);
886 static unsigned char FPT_scxferc(unsigned long p_port, unsigned char p_data);
887 static unsigned char FPT_scsendi(unsigned long p_port,
889 static unsigned char FPT_sciso(unsigned long p_port,
891 static void FPT_scwirod(unsigned long p_port, unsigned char p_data_bit);
892 static void FPT_scwiros(unsigned long p_port, unsigned char p_data_bit);
894 static unsigned char FPT_scsell(unsigned long p_port, unsigned char targ_id);
895 static void FPT_scwtsel(unsigned long p_port);
896 static void FPT_inisci(unsigned char p_card, unsigned long p_port,
898 static void FPT_scsavdi(unsigned char p_card, unsigned long p_port);
902 static void FPT_autoCmdCmplt(unsigned long p_port, unsigned char p_card);
903 static void FPT_autoLoadDefaultMap(unsigned long p_port);
2003 static unsigned char FPT_SccbMgr_bad_isr(unsigned long p_port,
2012 if (RD_HARPOON(p_port + hp_ext_status) &
2017 FPT_hostDataXferAbort(p_port, p_card,
2021 if (RD_HARPOON(p_port + hp_pci_stat_cfg) & REC_MASTER_ABORT)
2023 WR_HARPOON(p_port + hp_pci_stat_cfg,
2024 (RD_HARPOON(p_port + hp_pci_stat_cfg) &
2027 WR_HARPOON(p_port + hp_host_blk_cnt, 0x00);
2037 FPT_sxfrp(p_port, p_card);
2039 temp = (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) &
2041 WR_HARPOON(p_port + hp_ee_ctrl,
2043 WR_HARPOON(p_port + hp_ee_ctrl, temp);
2046 (RDW_HARPOON((p_port + hp_intstat)) &
2048 FPT_phaseDecode(p_port, p_card);
2055 WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT);
2056 WR_HARPOON(p_port + hp_sys_ctrl, 0x00);
2061 FPT_hostDataXferAbort(p_port, p_card,
2065 DISABLE_AUTO(p_port);
2067 FPT_sresb(p_port, p_card);
2069 while (RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST) {
2077 (unsigned char)FPT_utilEERead(p_port,
2081 FPT_XbowInit(p_port, ScamFlg);
2090 WRW_HARPOON((p_port + hp_intstat), FIFO);
2093 FPT_sxfrp(p_port, p_card);
2098 DISABLE_AUTO(p_port);
2100 WRW_HARPOON((p_port + hp_intstat),
2125 FPT_sssyncv(p_port, pCurrCard->currentSCCB->TargID, NARROW_SCSI,
2134 FPT_scarb(p_port, LEVEL2_TAR);
2135 FPT_scsel(p_port);
2136 FPT_scasid(p_card, p_port);
2138 FPT_scbusf(p_port);
2140 WRW_HARPOON((p_port + hp_intstat), SCAM_SEL);
3545 static void FPT_sssyncv(unsigned long p_port, unsigned char p_id,
3605 WR_HARPOON(p_port + hp_synctarg_base + index, p_sync_value);
3734 static void FPT_sxfrp(unsigned long p_port, unsigned char p_card)
3738 DISABLE_AUTO(p_port);
3742 FPT_hostDataXferAbort(p_port, p_card,
3750 if (RDW_HARPOON((p_port + hp_intstat)) &
3754 WR_HARPOON(p_port + hp_xfercnt_0, 0x00);
3756 curr_phz = RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ;
3758 WRW_HARPOON((p_port + hp_intstat), XFER_CNT_0);
3760 WR_HARPOON(p_port + hp_scsisig, curr_phz);
3762 while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET)) &&
3764 (RD_HARPOON(p_port + hp_scsisig) & (unsigned char)S_SCSI_PHZ)))
3767 WR_HARPOON(p_port + hp_portctrl_0,
3770 if (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) {
3771 RD_HARPOON(p_port + hp_fifodata_0);
3774 WR_HARPOON(p_port + hp_portctrl_0,
3776 if (RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY) {
3777 WR_HARPOON(p_port + hp_fifodata_0, 0xFA);
3782 while (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) {
3783 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ)
3787 WR_HARPOON(p_port + hp_portctrl_0,
3789 while (!(RD_HARPOON(p_port + hp_xferstat) & FIFO_EMPTY)) {
3790 RD_HARPOON(p_port + hp_fifodata_0);
3793 if (!(RDW_HARPOON((p_port + hp_intstat)) & (BUS_FREE | RESET))) {
3794 WR_HARPOON(p_port + hp_autostart_0,
3796 while (!(RDW_HARPOON((p_port + hp_intstat)) & AUTO_INT)) {
3799 if (RDW_HARPOON((p_port + hp_intstat)) &
3802 (RDW_HARPOON((p_port + hp_intstat)) &
3995 static void FPT_phaseDecode(unsigned long p_port, unsigned char p_card)
4000 DISABLE_AUTO(p_port);
4003 (unsigned char)(RD_HARPOON(p_port + hp_scsisig) & S_SCSI_PHZ);
4007 (*phase) (p_port, p_card); /* Call the correct phase func */
4103 static void FPT_phaseCommand(unsigned long p_port, unsigned char p_card)
4117 WR_HARPOON(p_port + hp_scsisig, 0x00);
4119 ARAM_ACCESS(p_port);
4121 cdb_reg = p_port + CMD_STRT;
4138 WR_HARPOON(p_port + hp_portctrl_0, (SCSI_PORT));
4142 WR_HARPOON(p_port + hp_autostart_3, (AUTO_IMMED | CMD_ONLY_STRT));
4143 SGRAM_ACCESS(p_port);
4554 static void FPT_autoLoadDefaultMap(unsigned long p_port)
4558 ARAM_ACCESS(p_port);
4559 map_addr = p_port + hp_aramBase;
4648 SGRAM_ACCESS(p_port);
4660 static void FPT_autoCmdCmplt(unsigned long p_port, unsigned char p_card)
4667 status_byte = RD_HARPOON(p_port + hp_gp_reg_0);
4967 static void FPT_busMstrSGDataXferStart(unsigned long p_port,
4989 i = (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) &
4992 WR_HARPOON(p_port + hp_page_ctrl, i);
5017 WR_HARP32(p_port, reg_offset, addr);
5020 WR_HARP32(p_port, reg_offset, count);
5031 WR_HARPOON(p_port + hp_sg_addr, (sg_count << 4));
5035 WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt);
5037 WR_HARPOON(p_port + hp_portctrl_0,
5039 WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH);
5044 if ((!(RD_HARPOON(p_port + hp_synctarg_0) & NARROW_SCSI)) &&
5051 WR_HARP32(p_port, hp_xfercnt_0, tmpSGCnt);
5053 WR_HARPOON(p_port + hp_portctrl_0,
5055 WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH);
5058 WR_HARPOON(p_port + hp_page_ctrl, (unsigned char)(i | SCATTER_EN));
5069 static void FPT_busMstrDataXferStart(unsigned long p_port,
5088 HP_SETUP_ADDR_CNT(p_port, addr, count);
5092 WR_HARPOON(p_port + hp_portctrl_0,
5094 WR_HARPOON(p_port + hp_scsisig, S_DATAI_PH);
5096 WR_HARPOON(p_port + hp_xfer_cmd,
5102 WR_HARPOON(p_port + hp_portctrl_0,
5104 WR_HARPOON(p_port + hp_scsisig, S_DATAO_PH);
5106 WR_HARPOON(p_port + hp_xfer_cmd,
5124 static unsigned char FPT_busMstrTimeOut(unsigned long p_port)
5130 WR_HARPOON(p_port + hp_sys_ctrl, HALT_MACH);
5132 while ((!(RD_HARPOON(p_port + hp_ext_status) & CMD_ABORTED))
5136 if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) {
5137 WR_HARPOON(p_port + hp_sys_ctrl, HARD_ABORT);
5140 while ((RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY)
5145 RD_HARPOON(p_port + hp_int_status); /*Clear command complete */
5147 if (RD_HARPOON(p_port + hp_ext_status) & BM_CMD_BUSY) {
5501 unsigned long p_port;
5508 p_port = currCard->ioPort;
5516 (unsigned char)FPT_utilEERead(p_port, SCAM_CONFIG / 2);
5518 char)(FPT_utilEERead(p_port, (SYSTEM_CONFIG / 2)));
5523 FPT_inisci(p_card, p_port, p_our_id);
5529 FPT_Wait1Second(p_port);
5531 FPT_Wait(p_port, TO_250ms); */
5533 FPT_Wait1Second(p_port);
5536 while (!(FPT_scarb(p_port, INIT_SELTD))) {
5539 FPT_scsel(p_port);
5542 FPT_scxferc(p_port, SYNC_PTRN);
5543 FPT_scxferc(p_port, DOM_MSTR);
5545 FPT_scsendi(p_port,
5549 FPT_scbusf(p_port);
5552 FPT_sresb(p_port, p_card);
5553 FPT_Wait(p_port, TO_250ms);
5555 while (!(FPT_scarb(p_port, INIT_SELTD))) {
5558 FPT_scsel(p_port);
5561 FPT_scxferc(p_port, SYNC_PTRN);
5562 FPT_scxferc(p_port, DOM_MSTR);
5564 FPT_scsendi(p_port,
5569 FPT_scbusf(p_port);
5586 if (FPT_scsell(p_port, i)) {
5607 FPT_sresb(p_port, p_card);
5608 FPT_Wait1Second(p_port);
5609 while (!(FPT_scarb(p_port, INIT_SELTD))) {
5611 FPT_scsel(p_port);
5612 FPT_scasid(p_card, p_port);
5620 FPT_scwtsel(p_port);
5623 while (FPT_scxferc(p_port, 0x00) != SYNC_PTRN) {
5626 i = FPT_scxferc(p_port, 0x00);
5630 (p_port,
5632 i = FPT_scxferc(p_port, 0x00);
5634 k = FPT_scxferc(p_port, 0x00);
5647 p_port,
5663 if (!(FPT_scsendi(p_port,
5671 while (FPT_scxferc(p_port, 0x00) != CFG_CMPLT) {
5676 FPT_scbusf(p_port);
5678 FPT_scsavdi(p_card, p_port);
5706 static int FPT_scarb(unsigned long p_port, unsigned char p_sel_type)
5710 while (RD_HARPOON(p_port + hp_scsisig) & (SCSI_SEL | SCSI_BSY)) {
5713 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL)
5716 if (RD_HARPOON(p_port + hp_scsidata_0) != 00)
5719 WR_HARPOON(p_port + hp_scsisig,
5720 (RD_HARPOON(p_port + hp_scsisig) | SCSI_BSY));
5722 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_SEL) {
5724 WR_HARPOON(p_port + hp_scsisig,
5725 (RD_HARPOON(p_port + hp_scsisig) &
5730 WR_HARPOON(p_port + hp_scsisig,
5731 (RD_HARPOON(p_port + hp_scsisig) | SCSI_SEL));
5733 if (RD_HARPOON(p_port + hp_scsidata_0) != 00) {
5735 WR_HARPOON(p_port + hp_scsisig,
5736 (RD_HARPOON(p_port + hp_scsisig) &
5742 WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0)
5744 WR_HARPOON(p_port + hp_scsireset, SCAM_EN);
5745 WR_HARPOON(p_port + hp_scsidata_0, 0x00);
5746 WR_HARPOON(p_port + hp_scsidata_1, 0x00);
5747 WR_HARPOON(p_port + hp_portctrl_0, SCSI_BUS_EN);
5749 WR_HARPOON(p_port + hp_scsisig,
5750 (RD_HARPOON(p_port + hp_scsisig) | SCSI_MSG));
5752 WR_HARPOON(p_port + hp_scsisig, (RD_HARPOON(p_port + hp_scsisig)
5755 FPT_Wait(p_port, TO_250ms);
5768 static void FPT_scbusf(unsigned long p_port)
5770 WR_HARPOON(p_port + hp_page_ctrl,
5771 (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE));
5773 WR_HARPOON(p_port + hp_scsidata_0, 0x00);
5775 WR_HARPOON(p_port + hp_portctrl_0, (RD_HARPOON(p_port + hp_portctrl_0)
5778 WR_HARPOON(p_port + hp_scsisig, 0x00);
5780 WR_HARPOON(p_port + hp_scsireset, (RD_HARPOON(p_port + hp_scsireset)
5783 WR_HARPOON(p_port + hp_clkctrl_0, (RD_HARPOON(p_port + hp_clkctrl_0)
5786 WRW_HARPOON((p_port + hp_intstat), (BUS_FREE | AUTO_INT | SCAM_SEL));
5788 WR_HARPOON(p_port + hp_page_ctrl,
5789 (RD_HARPOON(p_port + hp_page_ctrl) & ~G_INT_DISABLE));
5800 static void FPT_scasid(unsigned char p_card, unsigned long p_port)
5819 FPT_scxferc(p_port, SYNC_PTRN);
5820 FPT_scxferc(p_port, ASSIGN_ID);
5822 if (!(FPT_sciso(p_port, &temp_id_string[0]))) {
5836 FPT_scxferc(p_port, MISC_CODE);
5837 FPT_scxferc(p_port, CLR_P_FLAG);
5843 FPT_scxferc(p_port, ID_0_7);
5845 FPT_scxferc(p_port, ID_8_F);
5853 FPT_scxferc(p_port, scam_id);
5865 FPT_scxferc(p_port, SYNC_PTRN);
5866 FPT_scxferc(p_port, CFG_CMPLT);
5877 static void FPT_scsel(unsigned long p_port)
5880 WR_HARPOON(p_port + hp_scsisig, SCSI_SEL);
5881 FPT_scwiros(p_port, SCSI_MSG);
5883 WR_HARPOON(p_port + hp_scsisig, (SCSI_SEL | SCSI_BSY));
5885 WR_HARPOON(p_port + hp_scsisig,
5887 WR_HARPOON(p_port + hp_scsidata_0,
5888 (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) |
5891 WR_HARPOON(p_port + hp_scsisig, (SCSI_BSY | SCSI_IOBIT | SCSI_CD));
5892 FPT_scwiros(p_port, SCSI_SEL);
5894 WR_HARPOON(p_port + hp_scsidata_0,
5895 (unsigned char)(RD_HARPOON(p_port + hp_scsidata_0) &
5897 FPT_scwirod(p_port, BIT(6));
5899 WR_HARPOON(p_port + hp_scsisig,
5911 static unsigned char FPT_scxferc(unsigned long p_port, unsigned char p_data)
5917 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5921 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5923 FPT_scwirod(p_port, BIT(7)); /*Wait for DB7 to be released. */
5924 while (!(RD_HARPOON(p_port + hp_scsidata_0) & BIT(5))) ;
5926 ret_data = (RD_HARPOON(p_port + hp_scsidata_0) & (unsigned char)0x1F);
5930 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5934 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5936 FPT_scwirod(p_port, BIT(5)); /*Wait for DB5 to be released. */
5941 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5945 WR_HARPOON(p_port + hp_scsidata_0, curr_data);
5947 FPT_scwirod(p_port, BIT(6)); /*Wait for DB6 to be released. */
5961 static unsigned char FPT_scsendi(unsigned long p_port,
5973 ret_data = FPT_scxferc(p_port, 00);
5977 ret_data = FPT_scxferc(p_port, 02);
5981 ret_data = FPT_scxferc(p_port, 01);
6013 static unsigned char FPT_sciso(unsigned long p_port,
6024 ret_data = FPT_scxferc(p_port, 0);
6043 FPT_scxferc(p_port, SYNC_PTRN);
6044 FPT_scxferc(p_port, ASSIGN_ID);
6072 static void FPT_scwirod(unsigned long p_port, unsigned char p_data_bit)
6079 if (RD_HARPOON(p_port + hp_scsidata_0) & p_data_bit)
6099 static void FPT_scwiros(unsigned long p_port, unsigned char p_data_bit)
6106 if (RD_HARPOON(p_port + hp_scsisig) & p_data_bit)
6151 static unsigned char FPT_scsell(unsigned long p_port, unsigned char targ_id)
6155 WR_HARPOON(p_port + hp_page_ctrl,
6156 (RD_HARPOON(p_port + hp_page_ctrl) | G_INT_DISABLE));
6158 ARAM_ACCESS(p_port);
6160 WR_HARPOON(p_port + hp_addstat,
6161 (RD_HARPOON(p_port + hp_addstat) | SCAM_TIMER));
6162 WR_HARPOON(p_port + hp_seltimeout, TO_4ms);
6164 for (i = p_port + CMD_STRT; i < p_port + CMD_STRT + 12; i += 2) {
6169 WRW_HARPOON((p_port + hp_intstat),
6172 WR_HARPOON(p_port + hp_select_id, targ_id);
6174 WR_HARPOON(p_port + hp_portctrl_0, SCSI_PORT);
6175 WR_HARPOON(p_port + hp_autostart_3, (SELECT | CMD_ONLY_STRT));
6176 WR_HARPOON(p_port + hp_scsictrl_0, (SEL_TAR | ENA_RESEL));
6178 while (!(RDW_HARPOON((p_port + hp_intstat)) &
6182 if (RDW_HARPOON((p_port + hp_intstat)) & RESET)
6183 FPT_Wait(p_port, TO_250ms);
6185 DISABLE_AUTO(p_port);
6187 WR_HARPOON(p_port + hp_addstat,
6188 (RD_HARPOON(p_port + hp_addstat) & ~SCAM_TIMER));
6189 WR_HARPOON(p_port + hp_seltimeout, TO_290ms);
6191 SGRAM_ACCESS(p_port);
6193 if (RDW_HARPOON((p_port + hp_intstat)) & (RESET | TIMEOUT)) {
6195 WRW_HARPOON((p_port + hp_intstat),
6198 WR_HARPOON(p_port + hp_page_ctrl,
6199 (RD_HARPOON(p_port + hp_page_ctrl) &
6207 while (!(RDW_HARPOON((p_port + hp_intstat)) & BUS_FREE)) {
6208 if (RD_HARPOON(p_port + hp_scsisig) & SCSI_REQ) {
6209 WR_HARPOON(p_port + hp_scsisig,
6211 ACCEPT_MSG(p_port);
6215 WRW_HARPOON((p_port + hp_intstat), CLR_ALL_INT_1);
6217 WR_HARPOON(p_port + hp_page_ctrl,
6218 (RD_HARPOON(p_port + hp_page_ctrl) &
6233 static void FPT_scwtsel(unsigned long p_port)
6235 while (!(RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL)) {
6247 static void FPT_inisci(unsigned char p_card, unsigned long p_port,
6256 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD)
6282 FPT_utilEERead(p_port,
6434 static void FPT_scsavdi(unsigned char p_card, unsigned long p_port)
6442 sum_data += FPT_utilEERead(p_port, i);
6445 FPT_utilEEWriteOnOff(p_port, 1); /* Enable write access to the EEPROM */
6447 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD)
6460 FPT_utilEEWrite(p_port, ee_data,
6467 FPT_utilEEWrite(p_port, sum_data, EEPROM_CHECK_SUM / 2);
6468 FPT_utilEEWriteOnOff(p_port, 0); /* Turn off write access */
6528 static void FPT_BusMasterInit(unsigned long p_port)
6531 WR_HARPOON(p_port + hp_sys_ctrl, DRVR_RST);
6532 WR_HARPOON(p_port + hp_sys_ctrl, 0x00);
6534 WR_HARPOON(p_port + hp_host_blk_cnt, XFER_BLK64);
6536 WR_HARPOON(p_port + hp_bm_ctrl, (BMCTRL_DEFAULT));
6538 WR_HARPOON(p_port + hp_ee_ctrl, (SCSI_TERM_ENA_H));
6540 RD_HARPOON(p_port + hp_int_status); /*Clear interrupts. */
6541 WR_HARPOON(p_port + hp_int_mask, (INT_CMD_COMPL | SCSI_INTERRUPT));
6542 WR_HARPOON(p_port + hp_page_ctrl, (RD_HARPOON(p_port + hp_page_ctrl) &
6555 static void FPT_DiagEEPROM(unsigned long p_port)
6559 if (RD_HARPOON(p_port + hp_page_ctrl) & NARROW_SCSI_CARD)
6564 temp = FPT_utilEERead(p_port, FW_SIGNATURE / 2);
6570 temp += FPT_utilEERead(p_port, index);
6574 if (temp == FPT_utilEERead(p_port, EEPROM_CHECK_SUM / 2)) {
6580 FPT_utilEEWriteOnOff(p_port, (unsigned char)1);
6584 FPT_utilEEWrite(p_port, 0x0000, index);
6589 FPT_utilEEWrite(p_port, 0x4641, FW_SIGNATURE / 2);
6591 FPT_utilEEWrite(p_port, 0x3920, MODEL_NUMB_0 / 2);
6593 FPT_utilEEWrite(p_port, 0x3033, MODEL_NUMB_2 / 2);
6595 FPT_utilEEWrite(p_port, 0x2020, MODEL_NUMB_4 / 2);
6597 FPT_utilEEWrite(p_port, 0x70D3, SYSTEM_CONFIG / 2);
6599 FPT_utilEEWrite(p_port, 0x0010, BIOS_CONFIG / 2);
6601 FPT_utilEEWrite(p_port, 0x0003, SCAM_CONFIG / 2);
6603 FPT_utilEEWrite(p_port, 0x0007, ADAPTER_SCSI_ID / 2);
6606 FPT_utilEEWrite(p_port, 0x0000, IGNORE_B_SCAN / 2);
6608 FPT_utilEEWrite(p_port, 0x0000, SEND_START_ENA / 2);
6610 FPT_utilEEWrite(p_port, 0x0000, DEVICE_ENABLE / 2);
6613 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL01 / 2);
6615 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL23 / 2);
6617 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL45 / 2);
6619 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL67 / 2);
6621 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBL89 / 2);
6623 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLab / 2);
6625 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLcd / 2);
6627 FPT_utilEEWrite(p_port, 0x4242, SYNC_RATE_TBLef / 2);
6630 FPT_utilEEWrite(p_port, 0x6C46, 64 / 2); /*PRODUCT ID */
6632 FPT_utilEEWrite(p_port, 0x7361, 66 / 2); /* FlashPoint LT */
6634 FPT_utilEEWrite(p_port, 0x5068, 68 / 2);
6636 FPT_utilEEWrite(p_port, 0x696F, 70 / 2);
6638 FPT_utilEEWrite(p_port, 0x746E, 72 / 2);
6640 FPT_utilEEWrite(p_port, 0x4C20, 74 / 2);
6642 FPT_utilEEWrite(p_port, 0x2054, 76 / 2);
6644 FPT_utilEEWrite(p_port, 0x2020, 78 / 2);
6648 FPT_utilEEWrite(p_port, (0x0700 + TYPE_CODE0), index);
6651 FPT_utilEEWrite(p_port, 0x5542, index); /*Vendor ID code */
6654 FPT_utilEEWrite(p_port, 0x4C53, index);
6657 FPT_utilEEWrite(p_port, 0x474F, index);
6660 FPT_utilEEWrite(p_port, 0x4349, index);
6663 FPT_utilEEWrite(p_port, 0x5442, index); /*Vendor unique code */
6666 FPT_utilEEWrite(p_port, 0x202D, index);
6669 FPT_utilEEWrite(p_port, 0x3339, index);
6672 FPT_utilEEWrite(p_port, 0x2030, index); /* 01234567 */
6675 FPT_utilEEWrite(p_port, 0x5453, index);
6678 FPT_utilEEWrite(p_port, 0x5645, index);
6681 FPT_utilEEWrite(p_port, 0x2045, index);
6684 FPT_utilEEWrite(p_port, 0x202F, index);
6687 FPT_utilEEWrite(p_port, 0x4F4A, index);
6690 FPT_utilEEWrite(p_port, 0x204E, index);
6693 FPT_utilEEWrite(p_port, 0x3539, index);
6696 FPT_utilEEWrite(p_port, temp, EEPROM_CHECK_SUM / 2);
6698 FPT_utilEEWriteOnOff(p_port, (unsigned char)0);
7248 static void FPT_Wait1Second(unsigned long p_port)
7254 FPT_Wait(p_port, TO_250ms);
7256 if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST))
7259 if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL))
7272 static void FPT_Wait(unsigned long p_port, unsigned char p_delay)
7277 old_timer = RD_HARPOON(p_port + hp_seltimeout);
7279 green_flag = RD_HARPOON(p_port + hp_clkctrl_0);
7280 WR_HARPOON(p_port + hp_clkctrl_0, CLKCTRL_DEFAULT);
7282 WR_HARPOON(p_port + hp_seltimeout, p_delay);
7283 WRW_HARPOON((p_port + hp_intstat), TIMEOUT);
7284 WRW_HARPOON((p_port + hp_intena), (FPT_default_intena & ~TIMEOUT));
7286 WR_HARPOON(p_port + hp_portctrl_0,
7287 (RD_HARPOON(p_port + hp_portctrl_0) | START_TO));
7289 while (!(RDW_HARPOON((p_port + hp_intstat)) & TIMEOUT)) {
7291 if ((RD_HARPOON(p_port + hp_scsictrl_0) & SCSI_RST))
7294 if ((RDW_HARPOON((p_port + hp_intstat)) & SCAM_SEL))
7298 WR_HARPOON(p_port + hp_portctrl_0,
7299 (RD_HARPOON(p_port + hp_portctrl_0) & ~START_TO));
7301 WRW_HARPOON((p_port + hp_intstat), TIMEOUT);
7302 WRW_HARPOON((p_port + hp_intena), FPT_default_intena);
7304 WR_HARPOON(p_port + hp_clkctrl_0, green_flag);
7306 WR_HARPOON(p_port + hp_seltimeout, old_timer);
7318 static void FPT_utilEEWriteOnOff(unsigned long p_port, unsigned char p_mode)
7323 (unsigned char)(RD_HARPOON(p_port + hp_ee_ctrl) &
7328 FPT_utilEESendCmdAddr(p_port, EWEN, EWEN_ADDR);
7332 FPT_utilEESendCmdAddr(p_port, EWDS, EWDS_ADDR);
7334 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */
7335 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */
7347 static void FPT_utilEEWrite(unsigned long p_port, unsigned short ee_data,
7356 char)((RD_HARPOON(p_port + hp_ee_ctrl) &
7359 FPT_utilEESendCmdAddr(p_port, EE_WRITE, ee_addr);
7370 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7371 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
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);
7380 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS));
7382 FPT_Wait(p_port, TO_10ms);
7384 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS | SEE_CS)); /* Set CS to EEPROM */
7385 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /* Turn off CS */
7386 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /* Turn off Master Select */
7398 static unsigned short FPT_utilEERead(unsigned long p_port,
7404 ee_data1 = FPT_utilEEReadOrg(p_port, ee_addr);
7406 ee_data2 = FPT_utilEEReadOrg(p_port, ee_addr);
7428 static unsigned short FPT_utilEEReadOrg(unsigned long p_port,
7437 char)((RD_HARPOON(p_port + hp_ee_ctrl) &
7440 FPT_utilEESendCmdAddr(p_port, EE_READ, ee_addr);
7448 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7449 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7451 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7452 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7456 if (RD_HARPOON(p_port + hp_ee_ctrl) & SEE_DI)
7461 WR_HARPOON(p_port + hp_ee_ctrl, (ee_value | SEE_MS)); /*Turn off CS */
7462 WR_HARPOON(p_port + hp_ee_ctrl, ee_value); /*Turn off Master Select */
7476 static void FPT_utilEESendCmdAddr(unsigned long p_port, unsigned char ee_cmd,
7485 (unsigned char)(RD_HARPOON(p_port + hp_page_ctrl) &
7489 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7492 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7501 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7502 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7504 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7505 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7507 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7508 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7524 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7525 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7527 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7528 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7530 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);
7531 WR_HARPOON(p_port + hp_ee_ctrl, ee_value);