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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? omap730_gspx.c

?? marvell8385 GSPI開發驅動
?? 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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区免费不卡 | 91亚洲精品久久久蜜桃| 久久女同互慰一区二区三区| 国产一区二区三区综合| 久久一区二区视频| 成人激情电影免费在线观看| 自拍偷拍亚洲激情| 欧美午夜精品电影| 色伊人久久综合中文字幕| 亚洲欧美日韩国产综合| 欧美亚洲国产怡红院影院| 天天操天天干天天综合网| 日韩一级完整毛片| 国产一区二区三区四区五区美女| 欧美国产日韩亚洲一区| 99久久精品99国产精品| 亚洲在线观看免费视频| 久久成人综合网| 风间由美性色一区二区三区| 国产欧美视频一区二区| 丁香亚洲综合激情啪啪综合| 亚洲精品乱码久久久久久久久| 在线观看成人免费视频| 麻豆极品一区二区三区| 国产日产精品一区| 精品视频一区二区不卡| 激情亚洲综合在线| 亚洲色图欧洲色图婷婷| 欧美精品一卡两卡| 国产一区二区不卡在线 | 91九色最新地址| 日本不卡一区二区| 亚洲综合色视频| 欧美一二三在线| 99久久国产综合精品麻豆| 丝袜国产日韩另类美女| 国产精品美日韩| 欧美一级高清片| 不卡欧美aaaaa| 成人黄色免费短视频| 亚洲韩国精品一区| 国产欧美一区视频| 91麻豆精品国产91久久久 | 亚洲电影激情视频网站| 精品99999| 欧美日韩国产电影| 成人黄色国产精品网站大全在线免费观看| 日日夜夜免费精品| 亚洲视频中文字幕| 国产亚洲精品超碰| 日韩精品一区二区三区在线| 欧美三级一区二区| 99re热这里只有精品免费视频| 韩国三级电影一区二区| 视频在线观看91| 亚洲精品国产无天堂网2021| 国产精品视频免费看| 精品久久人人做人人爰| 欧美日韩中文精品| 日本二三区不卡| 91免费在线播放| 99视频一区二区| 国产成人免费在线观看不卡| 精品一区二区三区视频在线观看| 亚洲成人动漫在线免费观看| 中文字幕一区日韩精品欧美| 国产亚洲精久久久久久| 精品国产91乱码一区二区三区| 7777精品伊人久久久大香线蕉最新版 | 国产精品女主播av| 精品国产a毛片| 欧美zozo另类异族| 日韩免费高清视频| 欧美刺激午夜性久久久久久久| 欧美美女一区二区在线观看| 欧美日韩一区二区三区高清| 91国模大尺度私拍在线视频| 色狠狠综合天天综合综合| 9i在线看片成人免费| av动漫一区二区| 久久日韩精品一区二区五区| 日韩专区一卡二卡| 亚洲一区二区黄色| 一区二区三区免费| 亚洲夂夂婷婷色拍ww47| 夜夜夜精品看看| 亚洲国产精品人人做人人爽| 亚洲国产视频一区二区| 午夜视频一区二区| 丝袜诱惑亚洲看片| 蜜桃av一区二区三区| 国模冰冰炮一区二区| 成人免费视频caoporn| 91啪亚洲精品| 欧美色视频在线观看| 91精品麻豆日日躁夜夜躁| 欧美一二三区在线| 久久一二三国产| 国产精品成人在线观看| 亚洲黄色av一区| 轻轻草成人在线| 国产九色精品成人porny| 成人高清av在线| 国产精品久久久久9999吃药| 亚洲日本在线视频观看| 午夜欧美大尺度福利影院在线看 | 国产高清视频一区| 成人精品视频一区二区三区尤物| aaa国产一区| 欧美亚洲一区二区在线| 日韩区在线观看| 欧美激情在线一区二区| 一区二区三区欧美日韩| 日韩国产一二三区| 国产精品1024| 欧美少妇bbb| 国产亚洲欧洲一区高清在线观看| 亚洲激情网站免费观看| 久久精品国内一区二区三区| 97精品久久久午夜一区二区三区| 欧美猛男gaygay网站| 国产视频一区不卡| 亚洲女人的天堂| 国内精品久久久久影院薰衣草| 一本色道久久综合狠狠躁的推荐 | 久久av资源站| 色综合久久天天| 欧美mv和日韩mv的网站| 亚洲欧美日韩久久| 国产在线精品一区二区| 欧美性猛交xxxxxx富婆| 欧美日韩国产首页| 久草这里只有精品视频| 91在线高清观看| 精品免费国产二区三区| 一区二区在线观看免费视频播放| 国产一区二区在线视频| 欧美人与z0zoxxxx视频| 亚洲天堂福利av| 国产精品一区二区果冻传媒| 欧美日韩一级视频| 中文字幕国产一区二区| 久久综合综合久久综合| 欧美最新大片在线看| 中文字幕精品在线不卡| 久久国产精品免费| 制服丝袜中文字幕亚洲| 亚洲精品欧美二区三区中文字幕| 国产成人福利片| 欧美xxxx老人做受| 日韩黄色片在线观看| 色狠狠一区二区| 亚洲欧美综合网| 成人黄色在线网站| 久久久精品综合| 狠狠色丁香九九婷婷综合五月| 91麻豆精品国产91久久久久久久久 | 日韩国产成人精品| 91国偷自产一区二区使用方法| 国产精品视频免费| 国产91精品精华液一区二区三区 | 色诱视频网站一区| 七七婷婷婷婷精品国产| 欧美亚洲免费在线一区| 亚洲男同1069视频| aaa欧美日韩| 亚洲女同一区二区| 91美女片黄在线| 99久久精品免费观看| 久久黄色级2电影| 91麻豆精品久久久久蜜臀| 亚洲最大成人网4388xx| 色综合久久久网| 一区二区三区av电影| 一本大道av伊人久久综合| 亚洲精品欧美二区三区中文字幕| 日本福利一区二区| 亚洲妇女屁股眼交7| 欧美电影在线免费观看| 日韩电影在线看| 精品国产乱码久久久久久影片| 精品在线播放免费| 欧美韩国日本综合| 91麻豆免费在线观看| 亚洲在线中文字幕| 欧美一级高清大全免费观看| 久久国产人妖系列| 国产亚洲视频系列| 99视频一区二区| 亚洲成人av资源| 亚洲精品一线二线三线无人区| 丁香网亚洲国际| 亚洲一区二区三区三| 日韩一区和二区| www.久久久久久久久| 亚洲曰韩产成在线| 欧美一级生活片| 成人精品鲁一区一区二区| 一区二区三区欧美| 亚洲精品一线二线三线无人区|