亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? omap730_gspx.c

?? marvell8385 GSPI開發(fā)驅(qū)動
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************* Paragon Wireless *****************
 *
 *  Purpose:   Omap730 SPI interface function module 
 *
 *  Author: 
 *
 *  Date: 2006/03/27 $
 *
 *  Revision: #1.0 $
 *
 *******************************************************/

#include "omap730_gspx.h"
#include <ndis.h>
static GSPI_HW_INFO    HwInfo;
static PGSPI_HW_INFO  pHwInfo= &HwInfo;
static const GUID  DEVICE_IFC_GPIO_GUID;
USHORT  dummy_clk_reg  = 0x05;
USHORT  dummy_clk_data = 0x0e;
static    NDIS_SPIN_LOCK              		SpiLock;
#ifdef DEBUG
DBGPARAM dpCurSettings =
{
    TEXT("SychipGspx"),
    {
        TEXT("Init"),          TEXT("Interrupt"),      TEXT("Transmit"),
        TEXT("Receive"),    TEXT("Command"),    TEXT("Function"),
        TEXT("Misc"),          TEXT("Undefined"),    TEXT("Undefined"),
        TEXT("Undefined"),  TEXT("Undefined"),    TEXT("Undefined"),  
        TEXT("Undefined"),  TEXT("Undefined"),    TEXT("Warning"),
        TEXT("Error") 
    },
    DBG_DEFAULT_DX
};
FILE *LogFile = NULL; 
#endif  // DEBUG

/*-----------------------------------------------------------
 *
 *  Name: OmapSpiOpen()
 *
 *  Description: Open Omap730 SPI
 *  
 *  Arguments:  PVOID pHC 
 *    
 *  Return Value: BOOL
 *           
 *
 *  Notes: 
--------------------------------------------------------------*/
BOOL OmapSpiOpen( PVOID pHC )
{
    OMAP730_SPI_REGS *pSPIRegs = (OMAP730_SPI_REGS*) pHC;

    GPIOClrBit( pHwInfo->hGPIO, GPIO_SPI_CS ); // enable spi_cs
    OUTREG16(&pSPIRegs->CTRL, 0);// Stop SPI  
    OUTREG16(&pSPIRegs->SET1, 0);// Switch clock off
    // PVT divider 1, no interrupts
    OUTREG16(&pSPIRegs->SET1, SPI_SET1_MSK0|SPI_SET1_MSK1|SPI_SET1_PVT1);   
    SETREG16(&pSPIRegs->SET1, SPI_SET1_EN_CLK);// Switch clock on
    OUTREG16(&pSPIRegs->SET2, 0x0);// Active clock is rising

    return TRUE;    
}

/*-----------------------------------------------------------
 *
 *  Name: OmapSpiClose()
 *
 *  Description:Close Omap730 SPI
 *  
 *  Arguments:  PVOID pHC 
 *    
 *  Return Value: BOOL
 *           
 *
 *  Notes: 
--------------------------------------------------------------*/
BOOL OmapSpiClose( PVOID pHC )
{
    OMAP730_SPI_REGS *pSPIRegs = (OMAP730_SPI_REGS*) pHC;

    OUTREG16(&pSPIRegs->CTRL, 0);// Stop SPI   
    GPIOSetBit( pHwInfo->hGPIO, GPIO_SPI_CS );// disable spi_cs
	
    return TRUE;    
}

/*-----------------------------------------------------------
 *
 *  Name: OmapSpiWrite16()
 *
 *  Description: Omap730 SPI Write
 *  
 *  Arguments:  PVOID pHC,UINT16 data
 *    
 *  Return Value: BOOL
 *           
 *
 *  Notes: 
--------------------------------------------------------------*/
BOOL OmapSpiWrite16( PVOID pHC,UINT16 data )
{
    OMAP730_SPI_REGS *pSPIRegs = (OMAP730_SPI_REGS*) pHC;

    OUTREG16(&pSPIRegs->CTRL, 0);
    OUTREG16(&pSPIRegs->TX_MSB, data);
    OUTREG16(&pSPIRegs->CTRL, SPI_CTRL_AD0|SPI_CTRL_NB16|SPI_CTRL_WR);
    while((INREG16(&pSPIRegs->STATUS) & SPI_STATUS_WE) == 0)
		;

    //RETAILMSG(1, (TEXT("*** OmapSpiWrite16:[%x] ***\r\n"),data));

    return TRUE;
}

/*-----------------------------------------------------------
 *
 *  Name: OmapSpiRead16()
 *
 *  Description: Omap730 SPI Write
 *  
 *  Arguments:  PVOID pHC 
 *    
 *  Return Value: UINT16
 *           
 *
 *  Notes: 
--------------------------------------------------------------*/
UINT16 OmapSpiRead16( PVOID pHC )
{
    OMAP730_SPI_REGS *pSPIRegs = (OMAP730_SPI_REGS*) pHC;
    USHORT rdata;

    OUTREG16(&pSPIRegs->CTRL, 0);
    OUTREG16(&pSPIRegs->TX_MSB, 0x0);  // dummy data
    OUTREG16(&pSPIRegs->CTRL, SPI_CTRL_AD0|SPI_CTRL_NB16|SPI_CTRL_RD);
    while ((INREG16(&pSPIRegs->STATUS) & SPI_STATUS_RE) == 0)
		;
    rdata = INREG16(&pSPIRegs->RX_LSB);

    //RETAILMSG(1, (TEXT("*** SPIRead16:[%x] ***\r\n"),rdata));

    return rdata;

}


/*-----------------------------------------------------------
 *
 *  Name: Omap_gspx_init()
 *
 *  Description: Omap730 SPI initialize
 *  
 *  Arguments:  void 
 *    
 *  Return Value: PVOID
 *           
 *
 *  Notes: 
--------------------------------------------------------------*/
PVOID Omap_gspx_init(void)
{
    DWORD SysIRQ; 
    PHYSICAL_ADDRESS ConfigAddress =   {OMAP730_CONFIG_REGS_PA};
    PHYSICAL_ADDRESS PortAddress = {OMAP730_SPI_1_REGS_PA};

    DEBUGMSG(ZONE_FUNC, (TEXT("+Omap_gspx_init()\n")));
    NdisAllocateSpinLock(&SpiLock);	
    // memory map
    pHwInfo->pSPIRegs = (OMAP730_SPI_REGS*)MmMapIoSpace(PortAddress, sizeof(OMAP730_SPI_REGS), FALSE );

    if (!pHwInfo->pSPIRegs)
    {
        //DEBUGMSG(ZONE_FUNC, (_T("Omap_gspx_init:: Error allocating SPI-100K-1 register\r\n")));
        goto cleanUp;
    }

    pHwInfo->hGPIO = GPIOOpen();// open GPIO

    if(pHwInfo->hGPIO == NULL)
    {
       // DEBUGMSG(ZONE_FUNC, (_T("Omap_gspx_init:: Error opening the GPIO driver!\r\n")));
        goto cleanUp;
    }

    // config SPI_CS as GPIO,output,high.
    pHwInfo->pConfigRegs = (OMAP730_CONFIG_REGS*)MmMapIoSpace( ConfigAddress, sizeof(OMAP730_CONFIG_REGS), FALSE );
    if(!pHwInfo->pConfigRegs)
    {
        //DEBUGMSG(ZONE_FUNC, (_T("Omap_gspx_init:: Error allocating OMAP config register\r\n")));
        goto cleanUp;
    }

    pHwInfo->pConfigRegs->IO_CONFIG8 = (pHwInfo->pConfigRegs->IO_CONFIG8 & (~0xe0000000) ) | 0xc0000000;

    GPIOSetMode(pHwInfo->hGPIO, GPIO_SPI_CS, GPIO_DIR_OUTPUT);
    GPIOSetBit(pHwInfo->hGPIO, GPIO_SPI_CS );

    // hi current charge enable
    // hi-z     disable USB charge
    // low      100mA
    // high     500mA
    GPIOSetMode(pHwInfo->hGPIO, 35, GPIO_DIR_OUTPUT);
    GPIOSetBit(pHwInfo->hGPIO, 35);
    // config SPI_INT,input,IRQ low
    GPIOSetMode(pHwInfo->hGPIO, GPIO_SPI_INT, GPIO_DIR_INPUT | GPIO_INT_HIGH_LOW);
    SysIRQ = GPIOGetIrq(pHwInfo->hGPIO, GPIO_SPI_INT);

    if(!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &SysIRQ, sizeof(DWORD), &(pHwInfo->SysIntr), sizeof(DWORD), NULL))
    {
        // invalid CardDetect SYSINTR value!
       // DEBUGMSG(ZONE_FUNC, (TEXT("Error obtaining SPI SYSINTR value!\n")));
        pHwInfo->SysIntr = SYSINTR_UNDEFINED;
        goto cleanUp;
    }

    // power on wlan       
    GPIOSetBit(pHwInfo->hGPIO, BSP_GPIO_WlanPower);
    GPIOSetBit(pHwInfo->hGPIO, BSP_GPIO_WlanPowerDown);
    // reset wlan spi
    GPIOClrBit(pHwInfo->hGPIO, BSP_GPIO_WlanReset);
    Sleep(5);
    GPIOSetBit(pHwInfo->hGPIO, BSP_GPIO_WlanReset);
    Sleep(5);

	//pHwInfo->bDriverShutdown = FALSE;
	
    return pHwInfo;

cleanUp:
    return NULL;

}

//+dzj
/*****************************************
 *
 *  ReTurnOn/Off the WlanCard power   
 *
 ******************************************/
void powerDownWlanCard()
{
    PGSPI_HW_INFO  pHwInfo= &HwInfo;

    //disable the interrupt thread for Wlan driver
    pHwInfo->IntsInfo.bDriverShutdown = TRUE;
    //shutdown the wlan
//    GPIOClrBit( pHwInfo->hGPIO, BSP_GPIO_WlanPower );
    // reset wlan
    GPIOClrBit(pHwInfo->hGPIO, BSP_GPIO_WlanReset);
    Sleep(5);
    GPIOSetBit(pHwInfo->hGPIO, BSP_GPIO_WlanReset);
    Sleep(20);
    GPIOClrBit( pHwInfo->hGPIO, BSP_GPIO_WlanPowerDown );
    return;
}

void powerOnWlanCard()
{
    PGSPI_HW_INFO  pHwInfo= &HwInfo;

    //turn on wlan power
//    GPIOSetBit(pHwInfo->hGPIO, BSP_GPIO_WlanPower);
    GPIOSetBit(pHwInfo->hGPIO, BSP_GPIO_WlanPowerDown);
    // reset wlan
    GPIOClrBit(pHwInfo->hGPIO, BSP_GPIO_WlanReset);
    Sleep(5);
    GPIOSetBit(pHwInfo->hGPIO, BSP_GPIO_WlanReset);
    Sleep(20);
    //enable the interrupt thread
    pHwInfo->IntsInfo.bDriverShutdown = FALSE;
  
    return;
}


void ResetWlanCard()
{
    powerDownWlanCard();
    Sleep(100);    
    powerOnWlanCard();
    return;
}
/*-----------------------------------------------------------
 *
 *  Name: Omap_gspx_deinit()
 *
 *  Description: Omap730 SPI deinitialize
 *  
 *  Arguments: PVOID pHC 
 *    
 *  Return Value: void
 *           
 *
 *  Notes: 
--------------------------------------------------------------*/
void Omap_gspx_deinit(PVOID pHC)
{
    GSPI_HW_INFO *pDevice = (GSPI_HW_INFO*) pHC;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费视频一区| 9人人澡人人爽人人精品| 欧美视频精品在线观看| 亚洲色图欧美在线| 色94色欧美sute亚洲线路一ni| 中文字幕在线播放不卡一区| 99国产精品久久久| 亚洲主播在线观看| 欧美精品粉嫩高潮一区二区| 美女一区二区久久| 久久久不卡影院| 日韩一二三区视频| 美女网站色91| 久久夜色精品国产噜噜av| 国产精品影视网| 亚洲欧美自拍偷拍| 精品视频色一区| 六月丁香婷婷色狠狠久久| 久久久久久麻豆| 91麻豆蜜桃一区二区三区| 亚洲成人动漫在线观看| 欧美大肚乱孕交hd孕妇| 成人国产精品免费观看动漫| 一区二区三区免费在线观看| 欧美一区二区视频在线观看2022| 国产呦精品一区二区三区网站| 国产精品久久久久一区 | 日韩成人一区二区| 久久噜噜亚洲综合| 91成人在线精品| 精品一区二区国语对白| 亚洲色图制服诱惑| 日韩亚洲欧美成人一区| 97精品久久久午夜一区二区三区| 婷婷国产v国产偷v亚洲高清| 欧美国产成人精品| 91麻豆精品国产91久久久使用方法 | 一区二区三区91| 337p粉嫩大胆噜噜噜噜噜91av| 91啪在线观看| 紧缚捆绑精品一区二区| 亚洲一区自拍偷拍| 国产调教视频一区| 制服丝袜日韩国产| 91小视频在线免费看| 精品一区二区日韩| 亚洲国产成人tv| 国产精品国产a级| 精品黑人一区二区三区久久| 欧美午夜影院一区| 国产乱码精品一品二品| 日本在线播放一区二区三区| 亚洲精品国产一区二区三区四区在线| 精品99久久久久久| 欧美巨大另类极品videosbest| 精品乱人伦一区二区三区| 日本久久电影网| 成人性生交大片免费看中文网站| 免费久久精品视频| 亚洲国产wwwccc36天堂| 综合欧美一区二区三区| 欧美国产一区视频在线观看| 精品国精品自拍自在线| 91精品国产高清一区二区三区蜜臀| 91久久精品网| 99久久国产综合色|国产精品| 国产乱一区二区| 久久er精品视频| 天天射综合影视| 亚洲成人激情av| 亚洲sss视频在线视频| 一区二区三区久久| 亚洲精品日韩专区silk| 国产精品福利av| 国产精品午夜电影| 国产调教视频一区| 欧美国产一区在线| 国产精品网站导航| 国产精品久久久久久久裸模| 中文文精品字幕一区二区| 国产拍揄自揄精品视频麻豆| 久久精品亚洲精品国产欧美 | 欧美色综合网站| 欧美午夜影院一区| 欧美日韩精品电影| 3751色影院一区二区三区| 3d成人动漫网站| 欧美大度的电影原声| 久久影院电视剧免费观看| 亚洲国产成人tv| 首页亚洲欧美制服丝腿| 麻豆精品久久久| 韩国女主播一区二区三区| 国产乱码精品一区二区三区忘忧草| 国产成人亚洲综合a∨婷婷| 北岛玲一区二区三区四区| 91免费国产在线观看| 精品视频免费看| 日韩欧美在线123| 久久精品男人天堂av| 亚洲欧洲综合另类| 亚洲午夜久久久| 看电影不卡的网站| 懂色中文一区二区在线播放| 91麻豆国产精品久久| 欧美日本一区二区| 亚洲精品一区二区三区99| 国产精品国产自产拍高清av| 亚洲一二三四久久| 久久狠狠亚洲综合| 成人av网在线| 欧美三级中文字| 久久久久久影视| 亚洲精品视频自拍| 另类小说视频一区二区| 高清在线不卡av| 欧美日韩国产不卡| 久久久不卡影院| 亚洲一区二区视频在线| 国内久久婷婷综合| 在线视频国产一区| 久久免费精品国产久精品久久久久| 亚洲视频 欧洲视频| 美日韩黄色大片| 91在线观看下载| 欧美成人三级在线| 亚洲女厕所小便bbb| 精品在线观看视频| 欧美综合在线视频| 久久精品一区蜜桃臀影院| 亚洲国产成人av| 成人深夜福利app| 日韩欧美二区三区| 亚洲午夜av在线| 粉嫩aⅴ一区二区三区四区 | 蜜桃av一区二区| 91免费观看在线| 爽好久久久欧美精品| 成人国产一区二区三区精品| 欧美一区二区三区免费在线看 | 色综合久久天天综合网| 欧美videossexotv100| 亚洲欧美偷拍三级| 国产乱码字幕精品高清av| 7777精品久久久大香线蕉 | 一本色道久久综合狠狠躁的推荐| 精品精品国产高清a毛片牛牛| 亚洲电影一级黄| 91色视频在线| 国产精品久久久久久久午夜片| 黄色资源网久久资源365| 欧美精品电影在线播放| 一卡二卡三卡日韩欧美| jlzzjlzz亚洲女人18| 国产欧美一区二区精品婷婷| 精品一区二区三区在线视频| 欧美精品v国产精品v日韩精品| 亚洲在线一区二区三区| 99v久久综合狠狠综合久久| 国产精品私人自拍| 国产福利91精品一区二区三区| 精品国产一区二区国模嫣然| 日本视频在线一区| 91精品国产91久久久久久一区二区 | 6080日韩午夜伦伦午夜伦| 亚洲午夜在线电影| 91久久精品一区二区三| 亚洲女爱视频在线| 色哟哟一区二区三区| 亚洲精品va在线观看| 91麻豆自制传媒国产之光| 亚洲人成网站在线| 91视频免费播放| 亚洲精品免费一二三区| 91免费观看视频| 亚洲精品国产无套在线观| 97久久精品人人爽人人爽蜜臀| 亚洲日本免费电影| 色婷婷av一区二区三区软件| 国模无码大尺度一区二区三区| 2023国产一二三区日本精品2022| 精品一区二区在线观看| 国产性天天综合网| 成人精品视频一区二区三区尤物| 国产精品色哟哟| 91美女蜜桃在线| 五月天亚洲婷婷| 精品美女一区二区三区| 国产乱理伦片在线观看夜一区| 国产精品私人自拍| 91国偷自产一区二区三区成为亚洲经典 | 波多野结衣中文一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 99精品欧美一区| 亚洲va国产天堂va久久en| 欧美va亚洲va香蕉在线| 国产a久久麻豆| 亚洲一区中文日韩| 日韩欧美激情在线| 成人v精品蜜桃久久一区|