⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 miscproc.c

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************* ?Marvell Semiconductor, Inc., 2001-2004 *****************
 *
 *  Purpose:    This module provides the implementation of power managment 
 *              and timer routines
 *
 *	$Author: schiu $
 *
 *	$Date: 2004/12/15 $
 *
 *	$Revision: #12 $
 *
 *****************************************************************************/
 

/*
===============================================================================
                                 INCLUDE FILES
===============================================================================
*/
#include "precomp.h"
//yz_add
//#include "powermanagement.h"
#include <winioctl.h>
#include "nuiouser.h"

#define	ON		1
#define OFF		0
//yz_end

#ifdef IF_GSPI
///extern BOOL g_bWLAN_FW_Downloaded;

#if OMAP
//chenglong add for wifi
extern void EnableVWiFi(BOOL bEnable);
extern void PowerDownWiFi(BOOL bEnable);
#endif //OMAP
#endif

#ifdef REASSOCIATE
NDIS_STATUS 
MrvDrvSetEncryptionStatus(
  IN PMRVDRV_ADAPTER          Adapter,
  IN NDIS_802_11_ENCRYPTION_STATUS  EncryptionStatus,
    IN NDIS_OID Oid,
  IN PVOID InformationBuffer,
  OUT PULONG BytesRead,
  OUT PULONG BytesNeeded
);
#endif
/*
===============================================================================
                                  DEFINITIONS
===============================================================================
*/

/*
===============================================================================
                           CODED PUBLIC PROCEDURES
===============================================================================
*/
/******************************************************************************
 *
 *  Name: MrvDrvPMCallback()
 *
 *  Description: Timer that will be fired after initialize routine is done
 *				 to indicate disconnect
 *
 *  Return Value: None
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
MrvDrvPMCallback(
    IN struct _NDIS_WORK_ITEM *pWorkItem,
    IN PVOID  Context
	)
{
	// get the adpater context
	PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) Context;

	//--------------------------------------------------------------------------------
	// Reinitialize all config parameters.
	//--------------------------------------------------------------------------------
    PostFwDownload( Adapter );

	//--------------------------------------------------------------------------------
    //      Update and report link status
	//--------------------------------------------------------------------------------
    Adapter->MediaConnectStatus = NdisMediaStateDisconnected;
    Adapter->LinkSpeed = MRVDRV_LINK_SPEED_1mbps;

    Adapter->ulNumOfBSSIDs = 0;
    Adapter->ulPSNumOfBSSIDs = 0;
    
	//--------------------------------------------------------------------------------
    //      Report link status change
	//--------------------------------------------------------------------------------
  	NdisMIndicateStatus(
		Adapter->MrvDrvAdapterHdl,
    	NDIS_STATUS_MEDIA_DISCONNECT,
		(PVOID)NULL,
		0);
    NdisMIndicateStatusComplete(Adapter->MrvDrvAdapterHdl);

#ifdef MRVL_GUI_INTERFACE
	MrvlNotifyApplication(
		COMMAND_EVENT_DISCONNECT,
		NULL,
		0);
#endif // MRVL_GUI_INTERFACE
}

#ifdef WHQL_FIX
/******************************************************************************
 *
 *  Name: MrvDrvIndicateConnectStatusTimer()
 *
 *  Description: Timer that will be fired after initialize routine is done
 *				 to indicate disconnect
 *
 *
 *  Arguments:           
 *	    IN PVOID SystemSpecific1
 *	    IN PVOID FunctionContext
 *	    IN PVOID SystemSpecific2
 *	    IN PVOID SystemSpecific3
 *    
 *  Return Value: None
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
MrvDrvIndicateConnectStatusTimer(
	IN PVOID SystemSpecific1,
	IN NDIS_HANDLE MiniportAdapterContext,
	IN PVOID SystemSpecific2,
	IN PVOID SystemSpecific3
	)
{

	PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) MiniportAdapterContext;

	if  (Adapter->bIsPendingReset == TRUE)  //  used for rest 
	{
		Adapter->MediaConnectStatus = NdisMediaStateConnected ;
// tt cetk_1
/*
		NdisMIndicateStatus(
						Adapter->MrvDrvAdapterHdl,
						NDIS_STATUS_MEDIA_CONNECT,
						(PVOID)NULL,
						0);

		NdisMIndicateStatusComplete(Adapter->MrvDrvAdapterHdl);
*/
		Adapter->bIsPendingReset = FALSE;
	}
//35.p6++
/*	
	else   // used for initialize
	{
		if ( Adapter->MediaConnectStatus == NdisMediaStateDisconnected )
		{
			// Need to indicate media status because initially, the card is always
			// at disconnected state
			NdisMIndicateStatus(
						Adapter->MrvDrvAdapterHdl,
						NDIS_STATUS_MEDIA_DISCONNECT,
						(PVOID)NULL,
						0);

			NdisMIndicateStatusComplete(Adapter->MrvDrvAdapterHdl);
              	DBGPRINT(DBG_CMDRESP, ("IndicateDisconnectTimer: Indicated disconnect\n"));

#ifdef MRVL_GUI_INTERFACE
			MrvlNotifyApplication(
					COMMAND_EVENT_DISCONNECT,
					NULL,
					0);
#endif 

		}
	}	
*/
//35.p6--
	Adapter->DisconnectTimerSet = FALSE;
}

#endif

#ifdef AvoidOidSetScan
/******************************************************************************
 *
 *  Name: MrvDrvAvoidScanAfterConnectedTimer()
 *
 *  Description: Timer that will be fired after initialize routine is done
 *				 to indicate connected
 *
 *
 *  Arguments:           
 *	    IN PVOID SystemSpecific1
 *	    IN PVOID FunctionContext
 *	    IN PVOID SystemSpecific2
 *	    IN PVOID SystemSpecific3
 *    
 *  Return Value: None
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID
MrvDrvAvoidScanAfterConnectedTimer(
	IN PVOID SystemSpecific1,
	IN NDIS_HANDLE MiniportAdapterContext,
	IN PVOID SystemSpecific2,
	IN PVOID SystemSpecific3
	)
{

	PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) MiniportAdapterContext;

       Adapter->bAvoidScanAfterConnectedforMSecs = FALSE;
}
#endif

/******************************************************************************
 *
 *  Name: MrvDrvTxPktTimerFunction()
 *
 *  Description: Tx Timer routine
 *
 *  Conditions for Use: (Not used in the current verison of driver)
 *
 *  Arguments:           
 *	    IN PVOID SystemSpecific1
 *	    IN PVOID FunctionContext
 *	    IN PVOID SystemSpecific2
 *	    IN PVOID SystemSpecific3
 *    
 *  Return Value: None
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID MrvDrvTxPktTimerFunction(
	IN PVOID SystemSpecific1,
	IN PVOID FunctionContext,
	IN PVOID SystemSpecific2,
	IN PVOID SystemSpecific3
	)
{     
	#ifdef IF_GSPI
	USHORT ucHostIntStatus=0;
	SD_API_STATUS    status;
	USHORT           ucCardStatus;
    #else

    //dralee_0126  
  	UCHAR ucHostIntStatus=0;
	SD_API_STATUS    status;
	UCHAR           ucCardStatus;
    #endif ///
	  PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) FunctionContext;

	DBGPRINT(DBG_TIMERS | DBG_WARNING,("- TX Pkt timeout, Tx Done does not response \n"));

    Adapter->TxPktTimerIsSet=FALSE;

#if 1 //dralee_0126 
	{   
  	  RETAILMSG(1,(L"--SDIO Tx Timeout: #%d pkts in Queue\n\r",Adapter->TxPacketCount));

      //EnterCriticalSection(&Adapter->IntCriticalSection);   

      status = If_ReadRegister(Adapter,
                               //SD_IO_READ ,
                               1, // function 1
                               HCR_HOST_INT_STATUS_REGISTER, 
                               FALSE,
                               &ucHostIntStatus,
                               sizeof(ucHostIntStatus)); 
     
      

    if(ucHostIntStatus)
    {

      EnterCriticalSection(&Adapter->IntCriticalSection);   
      Adapter->ucGHostIntStatus |= ucHostIntStatus; 
      LeaveCriticalSection(&Adapter->IntCriticalSection);  
      //dralee_1226
      ucCardStatus = ~ucHostIntStatus;    
      //ucCardStatus &= 0x1f;

      status = If_WriteRegister(Adapter,
                              //SD_IO_WRITE,          
                              1,     
                              HCR_HOST_INT_STATUS_REGISTER,
                              FALSE,
                              &ucCardStatus,   // reg
                              sizeof(ucCardStatus));    

      //LeaveCriticalSection(&Adapter->IntCriticalSection);    

      RETAILMSG(1,(L"HOST INT status:%x:%x\n",ucHostIntStatus, status)); 
      SetEvent(Adapter->hControllerInterruptEvent);
    } 
    else 
    {   
        //LeaveCriticalSection(&Adapter->IntCriticalSection);   
		// clean up the timed out pkt
		HandleTxSingleDoneEvent(Adapter);	 				
    } 

   }
#else
	if( Adapter->SentPacket !=NULL )
	{
      RETAILMSG(1,(L"SDIO Tx Timeout: #%d pkts in Queue\n\r",Adapter->TxPacketCount));
      // clean up the timed out pkt
 		  HandleTxSingleDoneEvent(Adapter);	 				
	}
#endif
 
	//return;
} 

#ifdef REASSOCIATE
 VOID MrvDrvReConnectTimerFunction(
	IN PVOID SystemSpecific1,
	IN PVOID FunctionContext,
	IN PVOID SystemSpecific2,
	IN PVOID SystemSpecific3
	)
{

//    	NDIS_STATUS Status;
	
	PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) FunctionContext;

	DBGPRINT(DBG_TIMERS | DBG_ALLEN|DBG_DEBUGUSE,("++ MrvDrvReConnectTimerFunction\n"));

    ReConnectHandler(Adapter);
	
	DBGPRINT(DBG_TIMERS | DBG_ALLEN,("-- MrvDrvReConnectTimerFunction\n"));
	
	return;
}
#endif //REASSOCIATE

#ifdef ACTIVE_ROAMING
VOID MrvDrvActiveRoamingTimerFunction(
	IN PVOID SystemSpecific1,
	IN PVOID FunctionContext,
	IN PVOID SystemSpecific2,
	IN PVOID SystemSpecific3
	)
{

	PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) FunctionContext;
	
	ActiveRoamingHandler(Adapter);
	
	return;
}

#ifdef BG_SCAN
VOID MrvDrvBGActiveRoamingTimerFunction(
	IN PVOID SystemSpecific1,
	IN PVOID FunctionContext,
	IN PVOID SystemSpecific2,
	IN PVOID SystemSpecific3
	)
{
       BOOLEAN  timerStatus;
	PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) FunctionContext;
	
	//ActiveRoamingHandler(Adapter);
	  #ifdef MRVL_DBG_BG_SCAN
			 #ifdef MRVL_PRINT_DBG_MSG
			        MrvPrintFile("\t\t[Marvell]MrvDrvBGActiveRoamingTimerFunction:Begin!!\n" );
	              #endif
        #endif  	
        if ( Adapter->MediaConnectStatus == NdisMediaStateConnected )
          {
            	      //preset	
                   if((Adapter->bBgScanEnabled==TRUE) )
                    	{
                               EnableBgScan(Adapter,FALSE);
                      }
		        SetupBgScanCurrentSSID(Adapter,Adapter->ulScanInterval);   
		        //DumpBgScanConfig( (POID_MRVL_DS_BG_SCAN_CONFIG)(Adapter->BgScanCfg) ); 
			 EnableBgScan(Adapter,TRUE);
          }
		
       NdisMCancelTimer(&Adapter->MrvBGActiveRoamingTimer, &timerStatus);
	Adapter->BGActiveRoamingTimerIsSet = FALSE;
		
	return;
}
#endif  //BG_SCAN
#endif  //ACTIVE_ROAMING

/******************************************************************************
 *
 *  Name: MrvDrvCommandTimerFunction()
 *
 *  Description: Command time-out routine
 *
 *  Conditions for Use: When current command exceeds expected execution time limit,
 *                      commad will expire and call the command time-out ruotine
 *
 *  Arguments:           
 *	    IN PVOID SystemSpecific1
 *	    IN PVOID FunctionContext
 *	    IN PVOID SystemSpecific2
 *	    IN PVOID SystemSpecific3
 *    
 *  Return Value: None
 * 
 *  Notes:               
 *
 *****************************************************************************/
VOID MrvDrvCommandTimerFunction(
	IN PVOID SystemSpecific1,
	IN PVOID FunctionContext,
	IN PVOID SystemSpecific2,
	IN PVOID SystemSpecific3
	)
{
	CmdCtrlNode *pTempNode;
	PHostCmd_DS_GEN pRetPtr;

	// get the adpater context
	PMRVDRV_ADAPTER Adapter = (PMRVDRV_ADAPTER) FunctionContext;


	if( !Adapter->CurCmd ) // False alarm
	{
    	DBGPRINT(DBG_TIMERS,("MrvDrvCommandTimerFunction() Timer fired, but no current command.\n"));

//lykao, 051305, begin		
#ifdef IF_SDIO
		// Check CmdWaitQ and execute the next command
		GetCmdFromQueueToExecute(Adapter);
#endif // IF_SDIO
//lykao, 051305, end
		return;
	}   
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -