summaryrefslogtreecommitdiffstats
path: root/drivers/staging/otus/hal/hprw.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/otus/hal/hprw.c')
-rw-r--r--drivers/staging/otus/hal/hprw.c1568
1 files changed, 0 insertions, 1568 deletions
diff --git a/drivers/staging/otus/hal/hprw.c b/drivers/staging/otus/hal/hprw.c
deleted file mode 100644
index 4dbd5fb..0000000
--- a/drivers/staging/otus/hal/hprw.c
+++ /dev/null
@@ -1,1568 +0,0 @@
-/*
- * Copyright (c) 2007-2008 Atheros Communications Inc.
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-#include "../80211core/cprecomp.h"
-#include "hpani.h"
-#include "hpusb.h"
-#include "hpreg.h"
-#include "../80211core/ratectrl.h"
-
-extern void zfIdlCmd(zdev_t* dev, u32_t* cmd, u16_t cmdLen);
-
-extern void zfCoreCwmBusy(zdev_t* dev, u16_t busy);
-u16_t zfDelayWriteInternalReg(zdev_t* dev, u32_t addr, u32_t val);
-u16_t zfFlushDelayWrite(zdev_t* dev);
-
-//#define zm_hp_priv(x) struct zsHpPriv* hpPriv=zgWlanDev.hpPrivate;
-
-void zfInitCmdQueue(zdev_t* dev)
-{
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv = (struct zsHpPriv*)(wd->hpPrivate);
-
- zmw_declare_for_critical_section();
-
- zmw_enter_critical_section(dev);
-#ifdef ZM_XP_USB_MULTCMD
- hpPriv->cmdTail = hpPriv->cmdHead = hpPriv->cmdSend = 0;
-#else
- hpPriv->cmdTail = hpPriv->cmdHead = 0;
-#endif
- hpPriv->cmdPending = 0;
- hpPriv->cmd.delayWcmdCount = 0;
- zmw_leave_critical_section(dev);
-}
-
-u16_t zfPutCmd(zdev_t* dev, u32_t* cmd, u16_t cmdLen, u16_t src, u8_t* buf)
-{
- u16_t i;
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
- /* Make sure command length < ZM_MAX_CMD_SIZE */
- zm_assert(cmdLen <= ZM_MAX_CMD_SIZE);
- /* Make sure command queue not full */
- //zm_assert(((hpPriv->cmdTail+1) & (ZM_CMD_QUEUE_SIZE-1)) != hpPriv->cmdHead);
- if (((hpPriv->cmdTail+1) & (ZM_CMD_QUEUE_SIZE-1)) == hpPriv->cmdHead ) {
- zm_debug_msg0("CMD queue full!!");
- return 0;
- }
-
- hpPriv->cmdQ[hpPriv->cmdTail].cmdLen = cmdLen;
- hpPriv->cmdQ[hpPriv->cmdTail].src = src;
- hpPriv->cmdQ[hpPriv->cmdTail].buf = buf;
- for (i=0; i<(cmdLen>>2); i++)
- {
- hpPriv->cmdQ[hpPriv->cmdTail].cmd[i] = cmd[i];
- }
-
- hpPriv->cmdTail = (hpPriv->cmdTail+1) & (ZM_CMD_QUEUE_SIZE-1);
-
- return 0;
-}
-
-u16_t zfGetCmd(zdev_t* dev, u32_t* cmd, u16_t* cmdLen, u16_t* src, u8_t** buf)
-{
- u16_t i;
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
- if (hpPriv->cmdTail == hpPriv->cmdHead)
- {
- return 3;
- }
-
- *cmdLen = hpPriv->cmdQ[hpPriv->cmdHead].cmdLen;
- *src = hpPriv->cmdQ[hpPriv->cmdHead].src;
- *buf = hpPriv->cmdQ[hpPriv->cmdHead].buf;
- for (i=0; i<((*cmdLen)>>2); i++)
- {
- cmd[i] = hpPriv->cmdQ[hpPriv->cmdHead].cmd[i];
- }
-
- hpPriv->cmdHead = (hpPriv->cmdHead+1) & (ZM_CMD_QUEUE_SIZE-1);
-
- return 0;
-}
-
-#ifdef ZM_XP_USB_MULTCMD
-void zfSendCmdEx(zdev_t* dev)
-{
- u32_t ncmd[ZM_MAX_CMD_SIZE/4];
- u16_t ncmdLen = 0;
- u16_t cmdFlag = 0;
- u16_t i;
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
- zmw_declare_for_critical_section();
-
- zmw_enter_critical_section(dev);
-
- if (hpPriv->cmdPending == 0)
- {
- if (hpPriv->cmdTail != hpPriv->cmdSend)
- {
- cmdFlag = 1;
- /* Get queueing command */
- ncmdLen= hpPriv->cmdQ[hpPriv->cmdSend].cmdLen;
- for (i=0; i<(ncmdLen>>2); i++)
- {
- ncmd[i] = hpPriv->cmdQ[hpPriv->cmdSend].cmd[i];
- }
- hpPriv->cmdSend = (hpPriv->cmdSend+1) & (ZM_CMD_QUEUE_SIZE-1);
-
- hpPriv->cmdPending = 1;
- }
- }
-
- zmw_leave_critical_section(dev);
-
- if ((cmdFlag == 1))
- {
- zfIdlCmd(dev, ncmd, ncmdLen);
- }
-}
-
-void zfiSendCmdComp(zdev_t* dev)
-{
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
- zmw_declare_for_critical_section();
-
- zmw_enter_critical_section(dev);
- hpPriv->cmdPending = 0;
- zmw_leave_critical_section(dev);
-
- zfSendCmdEx(dev);
-}
-#endif
-
-u16_t zfIssueCmd(zdev_t* dev, u32_t* cmd, u16_t cmdLen, u16_t src, u8_t* buf)
-{
- u16_t cmdFlag = 0;
- u16_t ret;
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
- zmw_declare_for_critical_section();
-
- zm_msg2_mm(ZM_LV_1, "cmdLen=", cmdLen);
-
- zmw_enter_critical_section(dev);
-
-#ifdef ZM_XP_USB_MULTCMD
- ret = zfPutCmd(dev, cmd, cmdLen, src, buf);
- zmw_leave_critical_section(dev);
-
- if (ret != 0)
- {
- return 1;
- }
-
- zfSendCmdEx(dev);
-#else
- if (hpPriv->cmdPending == 0)
- {
- hpPriv->cmdPending = 1;
- cmdFlag = 1;
- }
- ret = zfPutCmd(dev, cmd, cmdLen, src, buf);
-
- zmw_leave_critical_section(dev);
-
- if (ret != 0)
- {
- return 1;
- }
-
- if (cmdFlag == 1)
- {
- zfIdlCmd(dev, cmd, cmdLen);
- }
-#endif
- return 0;
-}
-
-void zfIdlRsp(zdev_t* dev, u32_t* rsp, u16_t rspLen)
-{
- u32_t cmd[ZM_MAX_CMD_SIZE/4];
- u16_t cmdLen;
- u16_t src;
- u8_t* buf;
- u32_t ncmd[ZM_MAX_CMD_SIZE/4];
- u16_t ncmdLen = 0;
- u16_t ret;
- u16_t cmdFlag = 0;
- u16_t i;
- s32_t nf;
- s32_t noisefloor[4];
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
-
- zmw_declare_for_critical_section();
-
- zmw_enter_critical_section(dev);
-
- ret = zfGetCmd(dev, cmd, &cmdLen, &src, &buf);
- #if 0
- zm_assert(ret == 0);
- #else
- if (ret != 0)
- {
- zm_debug_msg0("Error IdlRsp because none cmd!!\n");
- #ifndef ZM_XP_USB_MULTCMD
- zmw_leave_critical_section(dev);
- return;
- #endif
- }
- #endif
-#ifdef ZM_XP_USB_MULTCMD
- zmw_leave_critical_section(dev);
-#else
- if (hpPriv->cmdTail != hpPriv->cmdHead)
- {
- cmdFlag = 1;
- /* Get queueing command */
- ncmdLen= hpPriv->cmdQ[hpPriv->cmdHead].cmdLen;
- for (i=0; i<(ncmdLen>>2); i++)
- {
- ncmd[i] = hpPriv->cmdQ[hpPriv->cmdHead].cmd[i];
- }
- }
- else
- {
- hpPriv->cmdPending = 0;
- }
-
- zmw_leave_critical_section(dev);
-
- if (cmdFlag == 1)
- {
- zfIdlCmd(dev, ncmd, ncmdLen);
- }
-#endif
- if (src == ZM_OID_READ)
- {
- ZM_PERFORMANCE_REG(dev, 0x11772c, rsp[1]);
- zfwDbgReadRegDone(dev, cmd[1], rsp[1]);
- }
- else if (src == ZM_OID_FLASH_CHKSUM)
- {
- zfwDbgGetFlashChkSumDone(dev, rsp+1);
- }
- else if (src == ZM_OID_FLASH_READ)
- {
- u32_t datalen;
-
- datalen = (rsp[0] & 255);
-
- zfwDbgReadFlashDone(dev, cmd[1], rsp+1, datalen);
- }
- else if (src == ZM_OID_FLASH_PROGRAM)
- {
- /* Non do */
- }
- else if (src == ZM_OID_WRITE)
- {
- zfwDbgWriteRegDone(dev, cmd[1], cmd[2]);
- }
- else if (src == ZM_OID_TALLY)
- {
- zfCollectHWTally(dev, rsp, 0);
- }
- else if (src == ZM_OID_TALLY_APD)
- {
- zfCollectHWTally(dev, rsp, 1);
- zfwDbgReadTallyDone(dev);
-#ifdef ZM_ENABLE_BA_RATECTRL
- zfRateCtrlAggrSta(dev);
-#endif
- }
- else if (src == ZM_OID_DKTX_STATUS)
- {
- zm_debug_msg0("src = zm_OID_DKTX_STATUS");
- zfwDbgQueryHwTxBusyDone(dev, rsp[1]);
- }
- else if (src == ZM_CMD_SET_FREQUENCY)
- {
-
-//#ifdef ZM_OTUS_ENABLE_RETRY_FREQ_CHANGE
-#if 0
- zm_debug_msg1("Retry Set Frequency = ", rsp[1]);
-
- #if 1
- // Read the Noise Floor value !
- nf = ((rsp[2]>>19) & 0x1ff);
- if ((nf & 0x100) != 0x0)
- {
- noisefloor[0] = 0 - ((nf ^ 0x1ff) + 1);
- }
- else
- {
- noisefloor[0] = nf;
- }
-
- zm_debug_msg1("Noise Floor[1] = ", noisefloor[0]);
-
- nf = ((rsp[3]>>19) & 0x1ff);
- if ((nf & 0x100) != 0x0)
- {
- noisefloor[1] = 0 - ((nf ^ 0x1ff) + 1);
- }
- else
- {
- noisefloor[1] = nf;
- }
-
- zm_debug_msg1("Noise Floor[2] = ", noisefloor[1]);
- zm_debug_msg1("Is Site Survey = ", hpPriv->isSiteSurvey);
- #endif
-
- if ( (rsp[1] && hpPriv->freqRetryCounter == 0) ||
- (((noisefloor[0]>-60)||(noisefloor[1]>-60)) && hpPriv->freqRetryCounter==0) ||
- ((abs(noisefloor[0]-noisefloor[1])>=9) && hpPriv->freqRetryCounter==0) )
- {
- zm_debug_msg0("Retry to issue the frequency change command");
-
- if ( hpPriv->recordFreqRetryCounter == 1 )
- {
- zm_debug_msg0("Cold Reset");
-
- zfHpSetFrequencyEx(dev, hpPriv->latestFrequency,
- hpPriv->latestBw40,
- hpPriv->latestExtOffset,
- 2);
-
- if ( hpPriv->isSiteSurvey != 2 )
- {
- hpPriv->freqRetryCounter++;
- }
- hpPriv->recordFreqRetryCounter = 0;
- }
- else
- {
- zfHpSetFrequencyEx(dev, hpPriv->latestFrequency,
- hpPriv->latestBw40,
- hpPriv->latestExtOffset,
- 0);
- }
- hpPriv->recordFreqRetryCounter++;
- }
- else
-#endif
-
-/* ret: Bit0: AGC calibration 0=>finish 1=>unfinish */
-/* Bit1: Noise calibration 0=>finish 1=>unfinish */
-/* Bit2: Noise calibration finish, but NF value unexcepted => 1 */
- if ( (rsp[1] & 0x1) || (rsp[1] & 0x4) )
- {
- zm_debug_msg1("Set Frequency fail : ret = ", rsp[1]);
-
- /* 1. AGC Calibration fail */
- /* 2. Noise Calibration finish but error NoiseFloor value */
- /* and not in sitesurvey, try more twice */
- if ( hpPriv->isSiteSurvey == 2 )
- {
- if ( hpPriv->recordFreqRetryCounter < 2 )
- {
- /* cold reset */
- zfHpSetFrequencyEx(dev, hpPriv->latestFrequency,
- hpPriv->latestBw40,
- hpPriv->latestExtOffset,
- 2);
- hpPriv->recordFreqRetryCounter++;
- zm_debug_msg1("Retry to issue the frequency change command(cold reset) counter = ", hpPriv->recordFreqRetryCounter);
- }
- else
- {
- /* Fail : we would not accept this result! */
- zm_debug_msg0("\n\n\n\n Fail twice cold reset \n\n\n\n");
- hpPriv->coldResetNeedFreq = 0;
- hpPriv->recordFreqRetryCounter = 0;
- zfCoreSetFrequencyComplete(dev);
- }
- }
- else
- {
- /* in sitesurvey, coldreset in next channel */
- hpPriv->coldResetNeedFreq = 1;
- hpPriv->recordFreqRetryCounter = 0;
- zfCoreSetFrequencyComplete(dev);
- }
- }
- else if (rsp[1] & 0x2)
- {
- zm_debug_msg1("Set Frequency fail 2 : ret = ", rsp[1]);
-
- /* Noise Calibration un-finish */
- /* and not in sitesurvey, try more once */
- if ( hpPriv->isSiteSurvey == 2 )
- {
- if ( hpPriv->recordFreqRetryCounter < 1 )
- {
- /* cold reset */
- zfHpSetFrequencyEx(dev, hpPriv->latestFrequency,
- hpPriv->latestBw40,
- hpPriv->latestExtOffset,
- 2);
- hpPriv->recordFreqRetryCounter++;
- zm_debug_msg1("2 Retry to issue the frequency change command(cold reset) counter = ", hpPriv->recordFreqRetryCounter);
- }
- else
- {
- /* Fail : we would not accept this result! */
- zm_debug_msg0("\n\n\n\n 2 Fail twice cold reset \n\n\n\n");
- hpPriv->coldResetNeedFreq = 0;
- hpPriv->recordFreqRetryCounter = 0;
- zfCoreSetFrequencyComplete(dev);
- }
- }
- else
- {
- /* in sitesurvey, skip this frequency */
- hpPriv->coldResetNeedFreq = 0;
- hpPriv->recordFreqRetryCounter = 0;
- zfCoreSetFrequencyComplete(dev);
- }
- }
- //else if (rsp[1] & 0x4)
- //{
- // zm_debug_msg1("Set Frequency fail 3 : ret = ", rsp[1]);
- // hpPriv->coldResetNeedFreq = 0;
- // hpPriv->recordFreqRetryCounter = 0;
- // zfCoreSetFrequencyComplete(dev);
- //}
- else
- {
- //hpPriv->freqRetryCounter = 0;
- zm_debug_msg2(" return complete, ret = ", rsp[1]);
-
- /* set bb_heavy_clip_enable */
- if (hpPriv->enableBBHeavyClip && hpPriv->hwBBHeavyClip &&
- hpPriv->doBBHeavyClip)
- {
- u32_t setValue = 0x200;
-
- setValue |= hpPriv->setValueHeavyClip;
-
- //zm_dbg(("Do heavy clip setValue = %d\n", setValue));
-
- zfDelayWriteInternalReg(dev, 0x99e0+0x1bc000, setValue);
- zfFlushDelayWrite(dev);
- }
-
- hpPriv->coldResetNeedFreq = 0;
- hpPriv->recordFreqRetryCounter = 0;
- zfCoreSetFrequencyComplete(dev);
- }
-
- #if 1
- // Read the Noise Floor value !
- nf = ((rsp[2]>>19) & 0x1ff);
- if ((nf & 0x100) != 0x0)
- {
- noisefloor[0] = 0 - ((nf ^ 0x1ff) + 1);
- }
- else
- {
- noisefloor[0] = nf;
- }
-
- //zm_debug_msg1("Noise Floor[1] = ", noisefloor[0]);
-
- nf = ((rsp[3]>>19) & 0x1ff);
- if ((nf & 0x100) != 0x0)
- {
- noisefloor[1] = 0 - ((nf ^ 0x1ff) + 1);
- }
- else
- {
- noisefloor[1] = nf;
- }
-
- //zm_debug_msg1("Noise Floor[2] = ", noisefloor[1]);
-
- nf = ((rsp[5]>>23) & 0x1ff);
- if ((nf & 0x100) != 0x0)
- {
- noisefloor[2] = 0 - ((nf ^ 0x1ff) + 1);
- }
- else
- {
- noisefloor[2] = nf;
- }
-
- //zm_debug_msg1("Noise Floor ext[1] = ", noisefloor[2]);
-
- nf = ((rsp[6]>>23) & 0x1ff);
- if ((nf & 0x100) != 0x0)
- {
- noisefloor[3] = 0 - ((nf ^ 0x1ff) + 1);
- }
- else
- {
- noisefloor[3] = nf;
- }
-
- //zm_debug_msg1("Noise Floor ext[2] = ", noisefloor[3]);
-
- //zm_debug_msg1("Is Site Survey = ", hpPriv->isSiteSurvey);
- #endif
- }
- else if (src == ZM_CMD_SET_KEY)
- {
- zfCoreSetKeyComplete(dev);
- }
- else if (src == ZM_CWM_READ)
- {
- zm_msg2_mm(ZM_LV_0, "CWM rsp[1]=", rsp[1]);
- zm_msg2_mm(ZM_LV_0, "CWM rsp[2]=", rsp[2]);
- zfCoreCwmBusy(dev, zfCwmIsExtChanBusy(rsp[1], rsp[2]));
- }
- else if (src == ZM_MAC_READ)
- {
- /* rsp[1] = ZM_SEEPROM_MAC_ADDRESS_OFFSET; */
- /* rsp[2] = ZM_SEEPROM_MAC_ADDRESS_OFFSET+4; */
- /* rsp[3] = ZM_SEEPROM_REGDOMAIN_OFFSET; */
- /* rsp[4] = ZM_SEEPROM_VERISON_OFFSET; */
- /* rsp[5] = ZM_SEEPROM_HARDWARE_TYPE_OFFSET; */
- /* rsp[6] = ZM_SEEPROM_HW_HEAVY_CLIP; */
-
- u8_t addr[6], CCS, WWR;
- u16_t CountryDomainCode;
-
- /* BB heavy clip */
- //hpPriv->eepromHeavyClipFlag = (u8_t)((rsp[6]>>24) & 0xff); // force enable 8107
- //zm_msg2_mm(ZM_LV_0, "eepromHeavyClipFlag", hpPriv->eepromHeavyClipFlag);
- #if 0
- if (hpPriv->hwBBHeavyClip)
- {
- zm_msg0_mm(ZM_LV_0, "enable BB Heavy Clip");
- }
- else
- {
- zm_msg0_mm(ZM_LV_0, "Not enable BB Heavy Clip");
- }
- #endif
- zm_msg2_mm(ZM_LV_0, "MAC rsp[1]=", rsp[1]);
- zm_msg2_mm(ZM_LV_0, "MAC rsp[2]=", rsp[2]);
-
- addr[0] = (u8_t)(rsp[1] & 0xff);
- addr[1] = (u8_t)((rsp[1]>>8) & 0xff);
- addr[2] = (u8_t)((rsp[1]>>16) & 0xff);
- addr[3] = (u8_t)((rsp[1]>>24) & 0xff);
- addr[4] = (u8_t)(rsp[2] & 0xff);
- addr[5] = (u8_t)((rsp[2]>>8) & 0xff);
-/*#ifdef ZM_FB50
- addr[0] = (u8_t)(0 & 0xff);
- addr[1] = (u8_t)(3 & 0xff);
- addr[2] = (u8_t)(127 & 0xff);
- addr[3] = (u8_t)(0 & 0xff);
- addr[4] = (u8_t)(9 & 0xff);
- addr[5] = (u8_t)(11 & 0xff);
-#endif*/
-
- zfDelayWriteInternalReg(dev, ZM_MAC_REG_MAC_ADDR_L,
- ((((u32_t)addr[3])<<24) | (((u32_t)addr[2])<<16) | (((u32_t)addr[1])<<8) | addr[0]));
- zfDelayWriteInternalReg(dev, ZM_MAC_REG_MAC_ADDR_H,
- ((((u32_t)addr[5])<<8) | addr[4]));
- zfFlushDelayWrite(dev);
-
- wd->ledStruct.ledMode[0] = (u16_t)(rsp[5]&0xffff);
- wd->ledStruct.ledMode[1] = (u16_t)(rsp[5]>>16);
- zm_msg2_mm(ZM_LV_0, "ledMode[0]=", wd->ledStruct.ledMode[0]);
- zm_msg2_mm(ZM_LV_0, "ledMode[1]=", wd->ledStruct.ledMode[1]);
-
- /* Regulatory Related Setting */
- zm_msg2_mm(ZM_LV_0, "RegDomain rsp=", rsp[3]);
- zm_msg2_mm(ZM_LV_0, "OpFlags+EepMisc=", rsp[4]);
- hpPriv->OpFlags = (u8_t)((rsp[4]>>16) & 0xff);
- if ((rsp[2] >> 24) == 0x1) //Tx mask == 0x1
- {
- zm_msg0_mm(ZM_LV_0, "OTUS 1x2");
- hpPriv->halCapability |= ZM_HP_CAP_11N_ONE_TX_STREAM;
- }
- else
- {
- zm_msg0_mm(ZM_LV_0, "OTUS 2x2");
- }
- if (hpPriv->OpFlags & 0x1)
- {
- hpPriv->halCapability |= ZM_HP_CAP_5G;
- }
- if (hpPriv->OpFlags & 0x2)
- {
- hpPriv->halCapability |= ZM_HP_CAP_2G;
- }
-
-
- CCS = (u8_t)((rsp[3] & 0x8000) >> 15);
- WWR = (u8_t)((rsp[3] & 0x4000) >> 14);
- CountryDomainCode = (u16_t)(rsp[3] & 0x3FFF);
-
- if (rsp[3] != 0xffffffff)
- {
- if (CCS)
- {
- //zm_debug_msg0("CWY - Get Regulation Table from Country Code");
- zfHpGetRegulationTablefromCountry(dev, CountryDomainCode);
- }
- else
- {
- //zm_debug_msg0("CWY - Get Regulation Table from Reg Domain");
- zfHpGetRegulationTablefromRegionCode(dev, CountryDomainCode);
- }
- if (WWR)
- {
- //zm_debug_msg0("CWY - Enable 802.11d");
- /* below line shall be unmarked after A band is ready */
- //zfiWlanSetDot11DMode(dev, 1);
- }
- }
- else
- {
- zfHpGetRegulationTablefromRegionCode(dev, NO_ENUMRD);
- }
-
- zfCoreMacAddressNotify(dev, addr);
-
- }
- else if (src == ZM_EEPROM_READ)
- {
-#if 0
- u8_t addr[6], CCS, WWR;
- u16_t CountryDomainCode;
-#endif
- for (i=0; i<ZM_HAL_MAX_EEPROM_PRQ; i++)
- {
- if (hpPriv->eepromImageIndex < 1024)
- {
- hpPriv->eepromImage[hpPriv->eepromImageIndex++] = rsp[i+1];
- }
- }
-
- if (hpPriv->eepromImageIndex == (ZM_HAL_MAX_EEPROM_REQ*ZM_HAL_MAX_EEPROM_PRQ))
- {
- #if 0
- for (i=0; i<1024; i++)
- {
- zm_msg2_mm(ZM_LV_0, "index=", i);
- zm_msg2_mm(ZM_LV_0, "eepromImage=", hpPriv->eepromImage[i]);
- }
- #endif
- zm_msg2_mm(ZM_LV_0, "MAC [1]=", hpPriv->eepromImage[0x20c/4]);
- zm_msg2_mm(ZM_LV_0, "MAC [2]=", hpPriv->eepromImage[0x210/4]);
-#if 0
- addr[0] = (u8_t)(hpPriv->eepromImage[0x20c/4] & 0xff);
- addr[1] = (u8_t)((hpPriv->eepromImage[0x20c/4]>>8) & 0xff);
- addr[2] = (u8_t)((hpPriv->eepromImage[0x20c/4]>>16) & 0xff);
- addr[3] = (u8_t)((hpPriv->eepromImage[0x20c/4]>>24) & 0xff);
- addr[4] = (u8_t)(hpPriv->eepromImage[0x210/4] & 0xff);
- addr[5] = (u8_t)((hpPriv->eepromImage[0x210/4]>>8) & 0xff);
-
- zfCoreMacAddressNotify(dev, addr);
-
- zfDelayWriteInternalReg(dev, ZM_MAC_REG_MAC_ADDR_L,
- ((((u32_t)addr[3])<<24) | (((u32_t)addr[2])<<16) | (((u32_t)addr[1])<<8) | addr[0]));
- zfDelayWriteInternalReg(dev, ZM_MAC_REG_MAC_ADDR_H,
- ((((u32_t)addr[5])<<8) | addr[4]));
- zfFlushDelayWrite(dev);
-
- /* Regulatory Related Setting */
- zm_msg2_mm(ZM_LV_0, "RegDomain =", hpPriv->eepromImage[0x208/4]);
- CCS = (u8_t)((hpPriv->eepromImage[0x208/4] & 0x8000) >> 15);
- WWR = (u8_t)((hpPriv->eepromImage[0x208/4] & 0x4000) >> 14);
- /* below line shall be unmarked after A band is ready */
- //CountryDomainCode = (u16_t)(hpPriv->eepromImage[0x208/4] & 0x3FFF);
- CountryDomainCode = 8;
- if (CCS)
- {
- //zm_debug_msg0("CWY - Get Regulation Table from Country Code");
- zfHpGetRegulationTablefromCountry(dev, CountryDomainCode);
- }
- else
- {
- //zm_debug_msg0("CWY - Get Regulation Table from Reg Domain");
- zfHpGetRegulationTablefromRegionCode(dev, CountryDomainCode);
- }
- if (WWR)
- {
- //zm_debug_msg0("CWY - Enable 802.11d");
- /* below line shall be unmarked after A band is ready */
- //zfiWlanSetDot11DMode(dev, 1);
- }
-#endif
- zfCoreHalInitComplete(dev);
- }
- else
- {
- hpPriv->eepromImageRdReq++;
- zfHpLoadEEPROMFromFW(dev);
- }
- }
- else if (src == ZM_EEPROM_WRITE)
- {
- zfwDbgWriteEepromDone(dev, cmd[1], cmd[2]);
- }
- else if (src == ZM_ANI_READ)
- {
- u32_t cycleTime, ctlClear;
-
- zm_msg2_mm(ZM_LV_0, "ANI rsp[1]=", rsp[1]);
- zm_msg2_mm(ZM_LV_0, "ANI rsp[2]=", rsp[2]);
- zm_msg2_mm(ZM_LV_0, "ANI rsp[3]=", rsp[3]);
- zm_msg2_mm(ZM_LV_0, "ANI rsp[4]=", rsp[4]);
-
- hpPriv->ctlBusy += rsp[1];
- hpPriv->extBusy += rsp[2];
-
- cycleTime = 100000; //100 miniseconds
-
- if (cycleTime > rsp[1])
- {
- ctlClear = (cycleTime - rsp[1]) / 100;
- }
- else
- {
- ctlClear = 0;
- }
- if (wd->aniEnable)
- zfHpAniArPoll(dev, ctlClear, rsp[3], rsp[4]);
- }
- else if (src == ZM_CMD_ECHO)
- {
- if ( ((struct zsHpPriv*)wd->hpPrivate)->halReInit )
- {
- zfCoreHalInitComplete(dev);
- ((struct zsHpPriv*)wd->hpPrivate)->halReInit = 0;
- }
- else
- {
- zfHpLoadEEPROMFromFW(dev);
- }
- }
- else if (src == ZM_OID_FW_DL_INIT)
- {
- zfwDbgDownloadFwInitDone(dev);
- }
- return;
-}
-
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfWriteRegInternalReg */
-/* Write on chip internal register immediately. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* val : value */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Stephen Chen ZyDAS Technology Corporation 2005.11 */
-/* */
-/************************************************************************/
-u32_t zfWriteRegInternalReg(zdev_t* dev, u32_t addr, u32_t val)
-{
- u32_t cmd[3];
- u16_t ret;
-
- cmd[0] = 0x00000108;
- cmd[1] = addr;
- cmd[2] = val;
-
- ret = zfIssueCmd(dev, cmd, 12, ZM_OID_INTERNAL_WRITE, NULL);
- return ret;
-}
-
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfDelayWriteInternalReg */
-/* Write on chip internal register, write operation may be */
-/* postponed to form a multiple write command. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* val : value */
-/* */
-/* OUTPUTS */
-/* 0 : command been postponed */
-/* 1 : commands been executed */
-/* */
-/* AUTHOR */
-/* Stephen Chen ZyDAS Technology Corporation 2005.11 */
-/* */
-/************************************************************************/
-u16_t zfDelayWriteInternalReg(zdev_t* dev, u32_t addr, u32_t val)
-{
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u16_t i;
- u16_t ret;
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
- zmw_declare_for_critical_section();
-
- /* enter critical section */
- zmw_enter_critical_section(dev);
-
- /* Store command to global buffer */
- hpPriv->cmd.delayWcmdAddr[hpPriv->cmd.delayWcmdCount] = addr;
- hpPriv->cmd.delayWcmdVal[hpPriv->cmd.delayWcmdCount++] = val;
-
- /* If pending command reach size limit */
- if ((hpPriv->cmd.delayWcmdCount) >= ((ZM_MAX_CMD_SIZE - 4) >> 3))
- {
- cmd[0] = 0x00000100 + (hpPriv->cmd.delayWcmdCount<<3);
-
- /* copy command to cmd buffer */
- for (i=0; i<hpPriv->cmd.delayWcmdCount; i++)
- {
- cmd[1+(i<<1)] = hpPriv->cmd.delayWcmdAddr[i];
- cmd[2+(i<<1)] = hpPriv->cmd.delayWcmdVal[i];
- }
- /* reset pending command */
- hpPriv->cmd.delayWcmdCount = 0;
-
- /* leave critical section */
- zmw_leave_critical_section(dev);
-
- /* issue write command */
- ret = zfIssueCmd(dev, cmd, 4+(i<<3), ZM_OID_INTERNAL_WRITE, NULL);
-
- return 1;
- }
- else
- {
- /* leave critical section */
- zmw_leave_critical_section(dev);
-
- return 0;
- }
-}
-
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfFlushDelayWrite */
-/* Flush pending write command. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* */
-/* OUTPUTS */
-/* 0 : no pending command */
-/* 1 : commands been executed */
-/* */
-/* AUTHOR */
-/* Stephen Chen ZyDAS Technology Corporation 2005.11 */
-/* */
-/************************************************************************/
-u16_t zfFlushDelayWrite(zdev_t* dev)
-{
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u16_t i;
- u16_t ret;
- struct zsHpPriv* hpPriv;
-
- zmw_get_wlan_dev(dev);
- hpPriv=wd->hpPrivate;
-
- zmw_declare_for_critical_section();
-
- /* enter critical section */
- zmw_enter_critical_section(dev);
-
- /* If there is pending command */
- if (hpPriv->cmd.delayWcmdCount > 0)
- {
- cmd[0] = 0x00000100 + (hpPriv->cmd.delayWcmdCount<<3);
-
- /* copy command to cmd buffer */
- for (i=0; i<hpPriv->cmd.delayWcmdCount; i++)
- {
- cmd[1+(i<<1)] = hpPriv->cmd.delayWcmdAddr[i];
- cmd[2+(i<<1)] = hpPriv->cmd.delayWcmdVal[i];
- }
- /* reset pending command */
- hpPriv->cmd.delayWcmdCount = 0;
-
- /* leave critical section */
- zmw_leave_critical_section(dev);
-
- /* issue write command */
- ret = zfIssueCmd(dev, cmd, 4+(i<<3), ZM_OID_INTERNAL_WRITE, NULL);
-
- return 1;
- }
- else
- {
- /* leave critical section */
- zmw_leave_critical_section(dev);
-
- return 0;
- }
-}
-
-
-u32_t zfiDbgDelayWriteReg(zdev_t* dev, u32_t addr, u32_t val)
-{
- zfDelayWriteInternalReg(dev, addr, val);
- return 0;
-}
-
-u32_t zfiDbgFlushDelayWrite(zdev_t* dev)
-{
- zfFlushDelayWrite(dev);
- return 0;
-}
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgWriteReg */
-/* Write register. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* val : value */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Stephen Chen ZyDAS Technology Corporation 2005.10 */
-/* */
-/************************************************************************/
-u32_t zfiDbgWriteReg(zdev_t* dev, u32_t addr, u32_t val)
-{
- u32_t cmd[3];
- u16_t ret;
-
- cmd[0] = 0x00000108;
- cmd[1] = addr;
- cmd[2] = val;
-
- ret = zfIssueCmd(dev, cmd, 12, ZM_OID_WRITE, 0);
- return ret;
-}
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgWriteFlash */
-/* Write flash. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* val : value */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Yjsung ZyDAS Technology Corporation 2007.02 */
-/* */
-/************************************************************************/
-u32_t zfiDbgWriteFlash(zdev_t* dev, u32_t addr, u32_t val)
-{
- u32_t cmd[3];
- u16_t ret;
-
- //cmd[0] = 0x0000B008;
- /* len[0] : type[0xB0] : seq[?] */
- cmd[0] = 8 | (ZM_CMD_WFLASH << 8);
- cmd[1] = addr;
- cmd[2] = val;
-
- ret = zfIssueCmd(dev, cmd, 12, ZM_OID_WRITE, 0);
- return ret;
-}
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgWriteEeprom */
-/* Write EEPROM. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* val : value */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul ZyDAS Technology Corporation 2007.06 */
-/* */
-/************************************************************************/
-u32_t zfiDbgWriteEeprom(zdev_t* dev, u32_t addr, u32_t val)
-{
- u32_t cmd[3];
- u16_t ret;
-
- //cmd[0] = 0x0000B008;
- /* len[0] : type[0xB0] : seq[?] */
- cmd[0] = 8 | (ZM_CMD_WREEPROM << 8);
- cmd[1] = addr;
- cmd[2] = val;
-
- ret = zfIssueCmd(dev, cmd, 12, ZM_EEPROM_WRITE, 0);
- return ret;
-}
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgBlockWriteEeprom */
-/* Block Write Eeprom. */
-/* */
-/* p.s: now,it will write 16 bytes register data per block (N=4) */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* buf : input data buffer pointer */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul ZyDAS Technology Corporation 2007.06 */
-/* */
-/************************************************************************/
-//#define N buflen/4
-//#define SIZE (2*N+1)
-
-u32_t zfiDbgBlockWriteEeprom(zdev_t* dev, u32_t addr, u32_t* buf)
-{
- u32_t cmd[9]; //2N+1
- u16_t ret,i;
-
- //cmd[0] = 0x0000B008;
- /* len[0] : type[0xB0] : seq[?] */
-
- //cmd[0] = (8*N) | (ZM_CMD_WFLASH << 8);
- cmd[0] = 32 | (ZM_CMD_WREEPROM << 8); //8N
-
- for (i=0; i<4; i++) // i<N
- {
- cmd[(2*i)+1] = addr+(4*i);
- cmd[(2*i)+2] = *(buf+i);
- }
-
- ret = zfIssueCmd(dev, cmd, 36, ZM_EEPROM_WRITE, 0); //8N+4
-
- // added for EEPROMUpdate, wait a moment for prevent cmd queue full!
- //zfwSleep(dev, 1);
-
- return ret;
-}
-
-
-/* write EEPROM with wrlen : wrlen must be 4*n */
-/* command format : cmd_info(4) + addr(4) + eeprom(wrlen) */
-u32_t zfiDbgBlockWriteEeprom_v2(zdev_t* dev, u32_t addr, u32_t* buf, u32_t wrlen)
-{
- u32_t cmd[16];
- u16_t ret,i;
-
- /* len[0] : type[0xB0] : seq[?] */
- /* len = addr(4) + eeprom_block(wrlen) */
- cmd[0] = (wrlen+4) | (ZM_CMD_MEM_WREEPROM << 8);
- cmd[1] = addr;
-
- for (i=0; i<(wrlen/4); i++) // i<wrlen/4
- {
- cmd[2+i] = *(buf+i);
- }
- /* cmd_info(4) + addr(4) + eeprom(wrlen) */
- ret = zfIssueCmd(dev, cmd, (u16_t)(wrlen+8), ZM_EEPROM_WRITE, 0);
-
- return ret;
-}
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfDbgOpenEeprom */
-/* Open EEPROM. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* */
-/* OUTPUTS */
-/* */
-/* AUTHOR */
-/* Paul ZyDAS Technology Corporation 2007.06 */
-/* */
-/************************************************************************/
-void zfDbgOpenEeprom(zdev_t* dev)
-{
- // unlock EEPROM
- zfDelayWriteInternalReg(dev, 0x1D1400, 0x12345678);
- zfDelayWriteInternalReg(dev, 0x1D1404, 0x55aa00ff);
- zfDelayWriteInternalReg(dev, 0x1D1408, 0x13579ace);
- zfDelayWriteInternalReg(dev, 0x1D1414, 0x0);
- zfFlushDelayWrite(dev);
-}
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfDbgCloseEeprom */
-/* Close EEPROM. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* */
-/* OUTPUTS */
-/* */
-/* AUTHOR */
-/* Paul ZyDAS Technology Corporation 2007.05 */
-/* */
-/************************************************************************/
-void zfDbgCloseEeprom(zdev_t* dev)
-{
- // lock EEPROM
- zfDelayWriteInternalReg(dev, 0x1D1400, 0x87654321);
- //zfDelayWriteInternalReg(dev, 0x1D1404, 0xffffffff);
- //zfDelayWriteInternalReg(dev, 0x1D1408, 0xffffffff);
- //zfDelayWriteInternalReg(dev, 0x1D1414, 0x100);
- zfFlushDelayWrite(dev);
-}
-#if 0
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiSeriallyWriteEeprom */
-/* Write EEPROM Serially. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : start address of writing EEPROM */
-/* buf : input data buffer */
-/* buflen : size of input data buffer */
-/* (length of data write into EEPROM) */
-/* */
-/* OUTPUTS */
-/* */
-/* */
-/* */
-/* AUTHOR */
-/* Paul ZyDAS Technology Corporation 2007.06 */
-/* */
-/************************************************************************/
-u32_t zfiSeriallyWriteEeprom(zdev_t* dev, u32_t addr, u32_t* buf, u32_t buflen)
-{
- u32_t count;
- u16_t i,ret,blocksize;
- u8_t temp[2];
-
- // per 4 bytes = 1 count
- count = buflen/4;
-
- // Open EEPROM
- zfDbgOpenEeprom(dev);
-
- // Write EEPROM
- for (i=0; i<count; i++)
- {
- if (zfwWriteEeprom(dev, (addr+(4*i)), *(buf+i), 0) != 0)
- {
- // Update failed, Close EEPROM
- zm_debug_msg0("zfwWriteEeprom failed \n");
- zfDbgCloseEeprom(dev);
- return 1;
- }
- }
-
- // Close EEPROM
- zfDbgCloseEeprom(dev);
- return 0;
-}
-#endif
-#if 0
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiSeriallyBlockWriteEeprom */
-/* Block Write EEPROM Serially. */
-/* (BlockWrite: per 16bytes write EEPROM once) */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* buf : input data buffer */
-/* buflen : access data size of buf */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul ZyDAS Technology Corporation 2007.05 */
-/* */
-/************************************************************************/
-u32_t zfiSeriallyBlockWriteEeprom(zdev_t* dev, u32_t addr, u32_t* buf, u32_t buflen)
-{
- u32_t count;
- u16_t i,ret,blocksize;
- u8_t temp[2];
-
- // per 4 bytes = 1 count
- count = buflen/4;
-
- // Open EEPROM
- zfDbgOpenEeprom(dev);
-
- // Write EEPROM
- // EEPROM Write start address from: 0x1000!?
- // per 16bytes(N=4) block write EEPROM once
- for (i=0; i<(count/4); i++) // count/N
- {
- //zfiDbgBlockWriteEeprom(dev, (addr+(4*N*i)), buf+(N*i));
- //zfiDbgBlockWriteEeprom(dev, (addr+(16*i)), buf+(4*i));
- if (zfwBlockWriteEeprom(dev, (addr+(16*i)), buf+(4*i), 0) != 0)
- {
- zm_debug_msg0("zfiDbgBlockWriteEeprom failed \n");
- // Close EEPROM
- zfDbgCloseEeprom(dev);
- return 1;
- }
- }
-
- // Close EEPROM
- zfDbgCloseEeprom(dev);
- return 0;
-}
-#endif
-#if 0
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgDumpEeprom */
-/* Dump EEPROM. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : start address of dumping EEPROM */
-/* datalen : length of access EEPROM data */
-/* buf : point of buffer, the buffer saved dump data */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul ZyDAS Technology Corporation 2007.06 */
-/* */
-/************************************************************************/
-u32_t zfiDbgDumpEeprom(zdev_t* dev, u32_t addr, u32_t datalen, u32_t* buf)
-{
- u32_t count;
- u16_t i,ret;
-
- count = datalen/4;
-
- // over EEPROM length
- if(datalen > 0x2000)
- {
- return 1;
- }
-
- for(i=0; i<count; i++)
- {
- buf[i] = zfwReadEeprom(dev, addr+(4*i));
- }
-
- return 0;
-}
-#endif
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgReadReg */
-/* Read register. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : register address */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Stephen Chen ZyDAS Technology Corporation 2005.10 */
-/* */
-/************************************************************************/
-u32_t zfiDbgReadReg(zdev_t* dev, u32_t addr)
-{
- u32_t cmd[2];
- u16_t ret;
-
- cmd[0] = 0x00000004;
- cmd[1] = addr;
-
- ret = zfIssueCmd(dev, cmd, 8, ZM_OID_READ, 0);
- return ret;
-}
-
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgReadTally */
-/* Read register. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Stephen Chen ZyDAS Technology Corporation 2005.10 */
-/* */
-/************************************************************************/
-u32_t zfiDbgReadTally(zdev_t* dev)
-{
- u32_t cmd[1];
- u16_t ret;
- zmw_get_wlan_dev(dev);
-
- if ( ((struct zsHpPriv*)wd->hpPrivate)->halReInit )
- {
- return 1;
- }
-
- /* len[0] : type[0x81] : seq[?] */
- cmd[0] = 0 | (ZM_CMD_TALLY << 8);
- ret = zfIssueCmd(dev, cmd, 4, ZM_OID_TALLY, 0);
-
- /* len[0] : type[0x82] : seq[?] */
- cmd[0] = 0 | (ZM_CMD_TALLY_APD << 8);
- ret = zfIssueCmd(dev, cmd, 4, ZM_OID_TALLY_APD, 0);
-
- return ret;
-}
-
-
-u32_t zfiDbgSetIFSynthesizer(zdev_t* dev, u32_t value)
-{
- u32_t cmd[2];
- u16_t ret;
-
- /* len[4] : type[0x32] : seq[?] */
- cmd[0] = 0x4 | (ZM_OID_SYNTH << 8);
- cmd[1] = value;
-
- ret = zfIssueCmd(dev, cmd, 8, ZM_OID_SYNTH, 0);
- return ret;
-}
-
-u32_t zfiDbgQueryHwTxBusy(zdev_t* dev)
-{
- u32_t cmd[1];
- u16_t ret;
-
- /* len[4] : type[0xC0] : seq[?] */
- cmd[0] = 0 | (ZM_CMD_DKTX_STATUS << 8);
-
- ret = zfIssueCmd(dev, cmd, 4, ZM_OID_DKTX_STATUS, 0);
- return ret;
-}
-
-//Paul++
-#if 0
-u16_t zfHpBlockEraseFlash(zdev_t *dev, u32_t addr)
-{
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u16_t ret;
-
- cmd[0] = 0x00000004 | (ZM_CMD_FLASH_ERASE << 8);
- cmd[1] = addr;
-
- ret = zfIssueCmd(dev, cmd, 8, ZM_OID_INTERNAL_WRITE, NULL);
- return ret;
-}
-#endif
-
-#if 0
-u16_t zfiDbgProgramFlash(zdev_t *dev, u32_t offset, u32_t len, u32_t *data)
-{
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u16_t ret;
- u16_t i;
-
-
- cmd[0] = (ZM_CMD_FLASH_PROG << 8) | ((len+8) & 0xff);
- cmd[1] = offset;
- cmd[2] = len;
-
- for (i = 0; i < (len >> 2); i++)
- {
- cmd[3+i] = data[i];
- }
-
- ret = zfIssueCmd(dev, cmd, 12, ZM_OID_FLASH_PROGRAM, NULL);
-
- return ret;
-}
-#endif
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgChipEraseFlash */
-/* Chip Erase Flash. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul Atheros Technology Corporation 2007.09 */
-/* */
-/************************************************************************/
-u16_t zfiDbgChipEraseFlash(zdev_t *dev)
-{
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u16_t ret;
-
- cmd[0] = 0x00000000 | (ZM_CMD_FLASH_ERASE << 8);
-
- ret = zfIssueCmd(dev, cmd, 4, ZM_OID_INTERNAL_WRITE, NULL);
- return ret;
-}
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgGetFlashCheckSum */
-/* Get FlashCheckSum. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : Start address of getchksum */
-/* len : total lenth of calculate getchksum */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul Atheros Technology Corporation 2007.08 */
-/* */
-/************************************************************************/
-u32_t zfiDbgGetFlashCheckSum(zdev_t *dev, u32_t addr, u32_t len)
-{
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u32_t ret;
-
- cmd[0] = 0x00000008 | (ZM_CMD_FLASH_CHKSUM << 8);
- cmd[1] = addr;
- cmd[2] = len;
-
- ret = zfIssueCmd(dev, cmd, 12, ZM_OID_FLASH_CHKSUM, NULL);
-
- return ret;
-}
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDbgReadFlash */
-/* Read Flash. */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* addr : Start address of read flash */
-/* len : total lenth of read flash data */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul Atheros Technology Corporation 2007.09 */
-/* */
-/************************************************************************/
-u32_t zfiDbgReadFlash(zdev_t *dev, u32_t addr, u32_t len)
-{
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u32_t ret;
-
- cmd[0] = len | (ZM_CMD_FLASH_READ << 8);
- cmd[1] = addr;
-
- ret = zfIssueCmd(dev, cmd, 8, ZM_OID_FLASH_READ, NULL);
- return ret;
-}
-
-/************************************************************************/
-/* */
-/* FUNCTION DESCRIPTION zfiDownloadFwSet */
-/* Before Download FW, */
-/* Command FW to Software reset and close watch dog control. */
-/* */
-/* */
-/* INPUTS */
-/* dev : device pointer */
-/* */
-/* OUTPUTS */
-/* 0 : success */
-/* other : fail */
-/* */
-/* AUTHOR */
-/* Paul Atheros Technology Corporation 2007.09 */
-/* */
-/************************************************************************/
-u32_t zfiDownloadFwSet(zdev_t *dev)
-{
-//softwarereset
-//close watch dog
- u32_t cmd[(ZM_MAX_CMD_SIZE/4)];
- u32_t ret;
-
- cmd[0] = 0x00000008 | (ZM_CMD_FW_DL_INIT << 8);
-
- ret = zfIssueCmd(dev, cmd, 12, ZM_OID_FW_DL_INIT, NULL);
-
- return ret;
-}
-//Paul--
OpenPOWER on IntegriCloud