Staging: rt28x0: remove unused code from common/ee_efuse-c
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
fbedb45f6a
commit
abf1794e69
2 changed files with 0 additions and 352 deletions
|
@ -67,31 +67,6 @@ typedef union _EFUSE_CTRL_STRUC {
|
||||||
UINT32 word;
|
UINT32 word;
|
||||||
} EFUSE_CTRL_STRUC, *PEFUSE_CTRL_STRUC;
|
} EFUSE_CTRL_STRUC, *PEFUSE_CTRL_STRUC;
|
||||||
|
|
||||||
static UCHAR eFuseReadRegisters(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
IN USHORT Length,
|
|
||||||
OUT USHORT* pData);
|
|
||||||
|
|
||||||
static VOID eFuseReadPhysical(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN PUSHORT lpInBuffer,
|
|
||||||
IN ULONG nInBufferSize,
|
|
||||||
OUT PUSHORT lpOutBuffer,
|
|
||||||
IN ULONG nOutBufferSize);
|
|
||||||
|
|
||||||
static VOID eFusePhysicalWriteRegisters(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
IN USHORT Length,
|
|
||||||
OUT USHORT* pData);
|
|
||||||
|
|
||||||
static NTSTATUS eFuseWriteRegisters(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
IN USHORT Length,
|
|
||||||
IN USHORT* pData);
|
|
||||||
|
|
||||||
static VOID eFuseWritePhysical(
|
static VOID eFuseWritePhysical(
|
||||||
IN PRTMP_ADAPTER pAd,
|
IN PRTMP_ADAPTER pAd,
|
||||||
PUSHORT lpInBuffer,
|
PUSHORT lpInBuffer,
|
||||||
|
@ -293,37 +268,6 @@ static VOID eFuseReadPhysical(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
========================================================================
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Return Value:
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
========================================================================
|
|
||||||
*/
|
|
||||||
NTSTATUS eFuseRead(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
OUT PUCHAR pData,
|
|
||||||
IN USHORT Length)
|
|
||||||
{
|
|
||||||
USHORT* pOutBuf = (USHORT*)pData;
|
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
|
||||||
UCHAR EFSROM_AOUT;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for(i=0; i<Length; i+=2)
|
|
||||||
{
|
|
||||||
EFSROM_AOUT = eFuseReadRegisters(pAd, Offset+i, 2, &pOutBuf[i/2]);
|
|
||||||
}
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
|
@ -437,247 +381,6 @@ static VOID eFusePhysicalWriteRegisters(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
========================================================================
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Return Value:
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
========================================================================
|
|
||||||
*/
|
|
||||||
static NTSTATUS eFuseWriteRegisters(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
IN USHORT Length,
|
|
||||||
IN USHORT* pData)
|
|
||||||
{
|
|
||||||
USHORT i,Loop=0;
|
|
||||||
USHORT eFuseData;
|
|
||||||
USHORT LogicalAddress, BlkNum = 0xffff;
|
|
||||||
UCHAR EFSROM_AOUT;
|
|
||||||
|
|
||||||
USHORT addr,tmpaddr, InBuf[3], tmpOffset;
|
|
||||||
USHORT buffer[8];
|
|
||||||
BOOLEAN bWriteSuccess = TRUE;
|
|
||||||
|
|
||||||
DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters Offset=%x, pData=%x\n", Offset, *pData));
|
|
||||||
|
|
||||||
//Step 0. find the entry in the mapping table
|
|
||||||
//The address of EEPROM is 2-bytes alignment.
|
|
||||||
//The last bit is used for alignment, so it must be 0.
|
|
||||||
tmpOffset = Offset & 0xfffe;
|
|
||||||
EFSROM_AOUT = eFuseReadRegisters(pAd, tmpOffset, 2, &eFuseData);
|
|
||||||
|
|
||||||
if( EFSROM_AOUT == 0x3f)
|
|
||||||
{ //find available logical address pointer
|
|
||||||
//the logical address does not exist, find an empty one
|
|
||||||
//from the first address of block 45=16*45=0x2d0 to the last address of block 47
|
|
||||||
//==>48*16-3(reserved)=2FC
|
|
||||||
for (i=EFUSE_USAGE_MAP_START; i<=EFUSE_USAGE_MAP_END; i+=2)
|
|
||||||
{
|
|
||||||
//Retrive the logical block nubmer form each logical address pointer
|
|
||||||
//It will access two logical address pointer each time.
|
|
||||||
eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
|
|
||||||
if( (LogicalAddress & 0xff) == 0)
|
|
||||||
{//Not used logical address pointer
|
|
||||||
BlkNum = i-EFUSE_USAGE_MAP_START;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if(( (LogicalAddress >> 8) & 0xff) == 0)
|
|
||||||
{//Not used logical address pointer
|
|
||||||
if (i != EFUSE_USAGE_MAP_END)
|
|
||||||
{
|
|
||||||
BlkNum = i-EFUSE_USAGE_MAP_START+1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
BlkNum = EFSROM_AOUT;
|
|
||||||
}
|
|
||||||
|
|
||||||
DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters BlkNum = %d \n", BlkNum));
|
|
||||||
|
|
||||||
if(BlkNum == 0xffff)
|
|
||||||
{
|
|
||||||
DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters: out of free E-fuse space!!!\n"));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Step 1. Save data of this block which is pointed by the avaible logical address pointer
|
|
||||||
// read and save the original block data
|
|
||||||
for(i =0; i<8; i++)
|
|
||||||
{
|
|
||||||
addr = BlkNum * 0x10 ;
|
|
||||||
|
|
||||||
InBuf[0] = addr+2*i;
|
|
||||||
InBuf[1] = 2;
|
|
||||||
InBuf[2] = 0x0;
|
|
||||||
|
|
||||||
eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);
|
|
||||||
|
|
||||||
buffer[i] = InBuf[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
//Step 2. Update the data in buffer, and write the data to Efuse
|
|
||||||
buffer[ (Offset >> 1) % 8] = pData[0];
|
|
||||||
|
|
||||||
do
|
|
||||||
{ Loop++;
|
|
||||||
//Step 3. Write the data to Efuse
|
|
||||||
if(!bWriteSuccess)
|
|
||||||
{
|
|
||||||
for(i =0; i<8; i++)
|
|
||||||
{
|
|
||||||
addr = BlkNum * 0x10 ;
|
|
||||||
|
|
||||||
InBuf[0] = addr+2*i;
|
|
||||||
InBuf[1] = 2;
|
|
||||||
InBuf[2] = buffer[i];
|
|
||||||
|
|
||||||
eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
addr = BlkNum * 0x10 ;
|
|
||||||
|
|
||||||
InBuf[0] = addr+(Offset % 16);
|
|
||||||
InBuf[1] = 2;
|
|
||||||
InBuf[2] = pData[0];
|
|
||||||
|
|
||||||
eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Step 4. Write mapping table
|
|
||||||
addr = EFUSE_USAGE_MAP_START+BlkNum;
|
|
||||||
|
|
||||||
tmpaddr = addr;
|
|
||||||
|
|
||||||
if(addr % 2 != 0)
|
|
||||||
addr = addr -1;
|
|
||||||
InBuf[0] = addr;
|
|
||||||
InBuf[1] = 2;
|
|
||||||
|
|
||||||
//convert the address from 10 to 8 bit ( bit7, 6 = parity and bit5 ~ 0 = bit9~4), and write to logical map entry
|
|
||||||
tmpOffset = Offset;
|
|
||||||
tmpOffset >>= 4;
|
|
||||||
tmpOffset |= ((~((tmpOffset & 0x01) ^ ( tmpOffset >> 1 & 0x01) ^ (tmpOffset >> 2 & 0x01) ^ (tmpOffset >> 3 & 0x01))) << 6) & 0x40;
|
|
||||||
tmpOffset |= ((~( (tmpOffset >> 2 & 0x01) ^ (tmpOffset >> 3 & 0x01) ^ (tmpOffset >> 4 & 0x01) ^ ( tmpOffset >> 5 & 0x01))) << 7) & 0x80;
|
|
||||||
|
|
||||||
// write the logical address
|
|
||||||
if(tmpaddr%2 != 0)
|
|
||||||
InBuf[2] = tmpOffset<<8;
|
|
||||||
else
|
|
||||||
InBuf[2] = tmpOffset;
|
|
||||||
|
|
||||||
eFuseWritePhysical(pAd,&InBuf[0], 6, NULL, 0);
|
|
||||||
|
|
||||||
//Step 5. Compare data if not the same, invalidate the mapping entry, then re-write the data until E-fuse is exhausted
|
|
||||||
bWriteSuccess = TRUE;
|
|
||||||
for(i =0; i<8; i++)
|
|
||||||
{
|
|
||||||
addr = BlkNum * 0x10 ;
|
|
||||||
|
|
||||||
InBuf[0] = addr+2*i;
|
|
||||||
InBuf[1] = 2;
|
|
||||||
InBuf[2] = 0x0;
|
|
||||||
|
|
||||||
eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);
|
|
||||||
|
|
||||||
if(buffer[i] != InBuf[2])
|
|
||||||
{
|
|
||||||
bWriteSuccess = FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//Step 6. invlidate mapping entry and find a free mapping entry if not succeed
|
|
||||||
if (!bWriteSuccess)
|
|
||||||
{
|
|
||||||
DBGPRINT(RT_DEBUG_TRACE, ("Not bWriteSuccess BlkNum = %d\n", BlkNum));
|
|
||||||
|
|
||||||
// the offset of current mapping entry
|
|
||||||
addr = EFUSE_USAGE_MAP_START+BlkNum;
|
|
||||||
|
|
||||||
//find a new mapping entry
|
|
||||||
BlkNum = 0xffff;
|
|
||||||
for (i=EFUSE_USAGE_MAP_START; i<=EFUSE_USAGE_MAP_END; i+=2)
|
|
||||||
{
|
|
||||||
eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
|
|
||||||
if( (LogicalAddress & 0xff) == 0)
|
|
||||||
{
|
|
||||||
BlkNum = i-EFUSE_USAGE_MAP_START;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if(( (LogicalAddress >> 8) & 0xff) == 0)
|
|
||||||
{
|
|
||||||
if (i != EFUSE_USAGE_MAP_END)
|
|
||||||
{
|
|
||||||
BlkNum = i+1-EFUSE_USAGE_MAP_START;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DBGPRINT(RT_DEBUG_TRACE, ("Not bWriteSuccess new BlkNum = %d\n", BlkNum));
|
|
||||||
if(BlkNum == 0xffff)
|
|
||||||
{
|
|
||||||
DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters: out of free E-fuse space!!!\n"));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//invalidate the original mapping entry if new entry is not found
|
|
||||||
tmpaddr = addr;
|
|
||||||
|
|
||||||
if(addr % 2 != 0)
|
|
||||||
addr = addr -1;
|
|
||||||
InBuf[0] = addr;
|
|
||||||
InBuf[1] = 2;
|
|
||||||
|
|
||||||
eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);
|
|
||||||
|
|
||||||
// write the logical address
|
|
||||||
if(tmpaddr%2 != 0)
|
|
||||||
{
|
|
||||||
// Invalidate the high byte
|
|
||||||
for (i=8; i<15; i++)
|
|
||||||
{
|
|
||||||
if( ( (InBuf[2] >> i) & 0x01) == 0)
|
|
||||||
{
|
|
||||||
InBuf[2] |= (0x1 <<i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// invalidate the low byte
|
|
||||||
for (i=0; i<8; i++)
|
|
||||||
{
|
|
||||||
if( ( (InBuf[2] >> i) & 0x01) == 0)
|
|
||||||
{
|
|
||||||
InBuf[2] |= (0x1 <<i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (!bWriteSuccess&&Loop<2);
|
|
||||||
if(!bWriteSuccess)
|
|
||||||
DBGPRINT(RT_DEBUG_ERROR,("Efsue Write Failed!!\n"));
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
|
@ -723,49 +426,6 @@ static VOID eFuseWritePhysical(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
========================================================================
|
|
||||||
|
|
||||||
Routine Description:
|
|
||||||
|
|
||||||
Arguments:
|
|
||||||
|
|
||||||
Return Value:
|
|
||||||
|
|
||||||
Note:
|
|
||||||
|
|
||||||
========================================================================
|
|
||||||
*/
|
|
||||||
NTSTATUS eFuseWrite(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
IN PUCHAR pData,
|
|
||||||
IN USHORT length)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
USHORT* pValueX = (PUSHORT) pData; //value ...
|
|
||||||
|
|
||||||
// The input value=3070 will be stored as following
|
|
||||||
// Little-endian S | S Big-endian
|
|
||||||
// addr 1 0 | 0 1
|
|
||||||
// Ori-V 30 70 | 30 70
|
|
||||||
// After swapping
|
|
||||||
// 30 70 | 70 30
|
|
||||||
// Casting
|
|
||||||
// 3070 | 7030 (x)
|
|
||||||
// The swapping should be removed for big-endian
|
|
||||||
for(i=0; i<length; i+=2)
|
|
||||||
{
|
|
||||||
eFuseWriteRegisters(pAd, Offset+i, 2, &pValueX[i/2]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
========================================================================
|
========================================================================
|
||||||
|
|
||||||
|
|
|
@ -4052,18 +4052,6 @@ VOID eFuseGetFreeBlockCount(IN PRTMP_ADAPTER pAd,
|
||||||
|
|
||||||
INT eFuse_init(
|
INT eFuse_init(
|
||||||
IN PRTMP_ADAPTER pAd);
|
IN PRTMP_ADAPTER pAd);
|
||||||
|
|
||||||
NTSTATUS eFuseRead(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
OUT PUCHAR pData,
|
|
||||||
IN USHORT Length);
|
|
||||||
|
|
||||||
NTSTATUS eFuseWrite(
|
|
||||||
IN PRTMP_ADAPTER pAd,
|
|
||||||
IN USHORT Offset,
|
|
||||||
IN PUCHAR pData,
|
|
||||||
IN USHORT length);
|
|
||||||
//2008/09/11:KH add to support efuse-->
|
//2008/09/11:KH add to support efuse-->
|
||||||
#endif // RTMP_EFUSE_SUPPORT //
|
#endif // RTMP_EFUSE_SUPPORT //
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue