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

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

?? intr.c

?? 老外的一個開源項目
?? C
字號:
// Copyright (c) David Vescovi.  All rights reserved.
// Part of Project DrumStix
// Windows Embedded Developers Interest Group (WE-DIG) community project.
// http://www.we-dig.org
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------------------------
//
//  File:  intr.h
//
//  This file contains Gunstix board specific interrupt code.
//
//------------------------------------------------------------------------------
#include "bsp.h"


// Global Variables 
static volatile INTC_REG_T *g_pINTCRegs = NULL;
static volatile GPIO_REG_T *g_pGPIORegs = NULL;
static volatile OST_REG_T  *g_pOSTRegs  = NULL;

//------------------------------------------------------------------------------
//
//  Function:  BSPIntrInit
//
//------------------------------------------------------------------------------
BOOL BSPIntrInit()
{
	UINT32 *pHardware;

    OALMSG(OAL_INTR&&OAL_FUNC, (L"+BSPIntrInit\r\n"));

	g_pINTCRegs = (volatile INTC_REG_T *)OALPAtoVA(PXA255_BASE_REG_PA_INTC, FALSE);
	g_pGPIORegs = (volatile GPIO_REG_T *)OALPAtoVA(PXA255_BASE_REG_PA_GPIO, FALSE);
	g_pOSTRegs  = (volatile OST_REG_T *) OALPAtoVA(PXA255_BASE_REG_PA_OST, FALSE);

	// Set up static interrupt mappings

    pHardware = (UINT32 *) OALArgsQuery(BSP_ARGS_QUERY_HARDWARE);
    OALMSG(OAL_INTR, (L"hardware 0x%08x\r\n",*pHardware));

		OALIntrStaticTranslate(SYSINTR_TOUCH, IRQ_GPIO84_2_UCB1400);
		OALIntrStaticTranslate(SYSINTR_TOUCH_CHANGED, IRQ_OSMR1);
/*
	if (*pHardware & GUMCFG_TOUCH)
	{ // set touch interrupt
		SETREG32(&g_pGPIORegs->GRER0, GPIO_16_AUINTR);
		OUTREG32(&g_pGPIORegs->GEDR0, GPIO_16_AUINTR);
		OALIntrStaticTranslate(SYSINTR_TOUCH, IRQ_GPIO84_2_UCB1400);
		OALIntrStaticTranslate(SYSINTR_TOUCH_CHANGED, IRQ_OSMR1);
	}
*/

	SETREG32((PULONG)&g_pINTCRegs->ICMR, INTC_GPIO84_2);

    OALMSG(OAL_INTR&&OAL_FUNC, (L"-BSPIntrInit\r\n"));

    return TRUE;
}

//------------------------------------------------------------------------------

BOOL BSPIntrRequestIrqs(DEVICE_LOCATION *pDevLoc, UINT32 *pCount, UINT32 *pIrqs)
{
    BOOL rc = FALSE;

    OALMSG(OAL_INTR&&OAL_FUNC, (
        L"+BSPIntrRequestIrq(0x%08x->%d/%d/0x%08x/%d, 0x%08x, 0x%08x)\r\n", 
        pDevLoc, pDevLoc->IfcType, pDevLoc->BusNumber, pDevLoc->LogicalLoc,
        pDevLoc->Pin, pCount, pIrqs
    ));

    // Check for input params
	if (pIrqs == NULL || pCount == NULL || *pCount < 1) goto Done;

	switch (pDevLoc->IfcType) {
	case Internal:
		switch ((ULONG)pDevLoc->LogicalLoc) 
		{
			case (SMSC_ETH1_PA_BASE_REG + 0x300):
				pIrqs[0] = IRQ_GPIO84_2_ETH1;
				*pCount = 1;
				rc = TRUE;
				break;
			case (SMSC_ETH2_PA_BASE_REG + 0x300):
				pIrqs[0] = IRQ_GPIO84_2_ETH2;
				*pCount = 1;
				rc = TRUE;
				break;
// comment the next few lines if you want card based kitl to run in polled mode
			case (PXA255_BASE_REG_PA_PCMCIA_S0_IO + 0x300):
				pIrqs[0] = IRQ_GPIO84_2_PCCARD_S0;
				*pCount = 1;
				rc = TRUE;
				break;
			case (PXA255_BASE_REG_PA_PCMCIA_S1_IO + 0x300):
				pIrqs[0] = IRQ_GPIO84_2_PCCARD_S1;
				*pCount = 1;
				rc = TRUE;
				break;
		}
		break;
	}

Done:
    OALMSG(OAL_INTR&&OAL_FUNC, (L"-BSPIntrRequestIrq(rc = %d)\r\n", rc));
    return rc;
}

//------------------------------------------------------------------------------
//
//  Function:  BSPIntrEnableIrq
//
//  This function is called from OALIntrEnableIrq to enable interrupt on
//  secondary interrupt controller.
//
UINT32 BSPIntrEnableIrq(UINT32 irq)
{
    OALMSG(OAL_INTR&&OAL_VERBOSE, (L"+BSPIntrEnableIrq(%d)\r\n", irq));

	// Valid board-level interrupt?
    if ((irq >= IRQ_PXA255_GPIO84_2_MIN) && (irq <= IRQ_PXA255_GPIO84_2_MAX))
    {
		switch (irq) {
			case IRQ_GPIO84_2_ETH1:
				SETREG32(&g_pGPIORegs->GRER1, GPIO_36_E1INTR);
				break;
			case IRQ_GPIO84_2_ETH2:
				SETREG32(&g_pGPIORegs->GRER0, GPIO_27_E2INTR);
				break;
			case IRQ_GPIO84_2_UCB1400:
				SETREG32(&g_pGPIORegs->GRER0, GPIO_16_AUINTR);
				break;
			//case IRQ_GPIO84_2_CDMMC:
			//	SETREG32(&g_pGPIORegs->GRER0, GPIO_22_nCDMMC);
			//	SETREG32(&g_pGPIORegs->GFER0, GPIO_22_nCDMMC);
			//	SETREG32(&g_pGPIORegs->GRER1, GPIO_54_nCDMMC);
			//	SETREG32(&g_pGPIORegs->GFER1, GPIO_54_nCDMMC);
			//	break;
			case IRQ_GPIO84_2_PCCARD_S0:
				SETREG32(&g_pGPIORegs->GFER0, GPIO_26_S0_READY_nIREQ);
				break;
			case IRQ_GPIO84_2_PCCARD_S1:
				SETREG32(&g_pGPIORegs->GFER0, GPIO_27_S1_READY_nIREQ);
				break;
		}


        // enabling the interrupt at the secondary controller is enough
		// - no need to enable the PXA255 GPI84_2 interrupt.
        irq = OAL_INTR_IRQ_UNDEFINED;
    }

	OALMSG(OAL_INTR&&OAL_VERBOSE, (L"-BSPIntrEnableIrq(irq = %d)\r\n", irq));
    return irq;
}

//------------------------------------------------------------------------------
//
//  Function:  BSPIntrDisableIrq
//
//  This function is called from OALIntrDisableIrq to disable interrupt on
//  secondary interrupt controller.
//
UINT32 BSPIntrDisableIrq(UINT32 irq)
{
    OALMSG(OAL_INTR&&OAL_VERBOSE, (L"+BSPIntrDisableIrq(%d)\r\n", irq));
 
	// Valid board-level interrupt?
    if ((irq >= IRQ_PXA255_GPIO84_2_MIN) && (irq <= IRQ_PXA255_GPIO84_2_MAX))
    {
		switch (irq) {
			case IRQ_GPIO84_2_ETH1:
				CLRREG32(&g_pGPIORegs->GRER1, GPIO_36_E1INTR);
				break;
			case IRQ_GPIO84_2_ETH2:
				CLRREG32(&g_pGPIORegs->GRER0, GPIO_27_E2INTR);
				break;
			case IRQ_GPIO84_2_UCB1400:
				CLRREG32(&g_pGPIORegs->GRER0, GPIO_16_AUINTR);
				break;
			//case IRQ_GPIO84_2_CDMMC:
			//	CLRREG32(&g_pGPIORegs->GRER0, GPIO_22_nCDMMC);
			//	CLRREG32(&g_pGPIORegs->GFER0, GPIO_22_nCDMMC);
			//	CLRREG32(&g_pGPIORegs->GRER1, GPIO_54_nCDMMC);
			//	CLRREG32(&g_pGPIORegs->GFER1, GPIO_54_nCDMMC);
			//	break;
			case IRQ_GPIO84_2_PCCARD_S0:
				CLRREG32(&g_pGPIORegs->GFER0, GPIO_26_S0_READY_nIREQ);
				break;
			case IRQ_GPIO84_2_PCCARD_S1:
				CLRREG32(&g_pGPIORegs->GFER0, GPIO_27_S1_READY_nIREQ);
				break;
		}


        // Masking the interrupt at the secondary controller is enough
		// - no need to disable the PXA255 GPI84_2 interrupt.
        irq = OAL_INTR_IRQ_UNDEFINED;
    }

    OALMSG(OAL_INTR&&OAL_VERBOSE, (L"-BSPIntrDisableIrq(irq = %d\r\n", irq));
    return irq;
}

//------------------------------------------------------------------------------
//
//  Function:  BSPIntrDoneIrq
//
//  This function is called from OALIntrDoneIrq to finish interrupt on
//  secondary interrupt controller.
//
UINT32 BSPIntrDoneIrq(UINT32 irq)
{

    OALMSG(OAL_INTR&&OAL_VERBOSE, (L"+BSPIntrDoneIrq(%d)\r\n", irq));

	// Valid board-level interrupt?
    if (((irq >= IRQ_PXA255_GPIO84_2_MIN) && (irq <= IRQ_PXA255_GPIO84_2_MAX)) || irq == IRQ_OSMR1)
    {
		switch (irq) {
			case IRQ_GPIO84_2_ETH1:
				break;
			case IRQ_GPIO84_2_ETH2:
				break;
			case IRQ_GPIO84_2_UCB1400:
				break;
			//case IRQ_GPIO84_2_CDMMC:
			//	SETREG32(&g_pGPIORegs->GRER0, GPIO_22_nCDMMC);
			//	SETREG32(&g_pGPIORegs->GFER0, GPIO_22_nCDMMC);
			//	SETREG32(&g_pGPIORegs->GRER1, GPIO_54_nCDMMC);
			//	SETREG32(&g_pGPIORegs->GFER1, GPIO_54_nCDMMC);
			//	break;
			case IRQ_GPIO84_2_PCCARD_S0:
//				SETREG32(&g_pGPIORegs->GFER0, GPIO_26_S0_READY_nIREQ);
				break;
			case IRQ_GPIO84_2_PCCARD_S1:
//				SETREG32(&g_pGPIORegs->GFER0, GPIO_27_S1_READY_nIREQ);
				break;
		}


        // enabling the interrupt at the secondary controller is enough
		// - no need to enable the PXA255 GPI84_2 interrupt.
        irq = OAL_INTR_IRQ_UNDEFINED;
    }

	OALMSG(OAL_INTR&&OAL_VERBOSE, (L"-BSPIntrDoneIrq(irq = %d)\r\n", irq));
    return irq;
}


//------------------------------------------------------------------------------
//
//  Function:  BSPIntrActiveIrq
//
//  This function is called from interrupt handler to give BSP chance to 
//  translate IRQ in case of secondary interrupt controller.
//
UINT32 BSPIntrActiveIrq(UINT32 irq)
{
    OALMSG(OAL_INTR&&OAL_VERBOSE, (L"+BSPIntrActiveIrq(%d)\r\n", irq));

    switch(irq)
    {
    case IRQ_GPIO0:
        break;
    case IRQ_GPIO1:
        break;
    case IRQ_GPIO84_2:
			// we have to check all sources of 2-84 interruprs
			if (GPIO_36_E1INTR & INREG32(&g_pGPIORegs->GEDR1))
			{ // reset interrupt
				OUTREG32(&g_pGPIORegs->GEDR1, GPIO_36_E1INTR);
				irq = IRQ_GPIO84_2_ETH1;
				break;
			}
			else if (GPIO_27_E2INTR & INREG32(&g_pGPIORegs->GEDR0))
			{ // reset interrupt
				OUTREG32(&g_pGPIORegs->GEDR0, GPIO_27_E2INTR);
				irq = IRQ_GPIO84_2_ETH2;
				break;
			}
			else if (GPIO_16_AUINTR & INREG32(&g_pGPIORegs->GEDR0))
			{ // reset interrupt
				OUTREG32(&g_pGPIORegs->GEDR0, GPIO_16_AUINTR);
				irq = IRQ_GPIO84_2_UCB1400;
				break;
			}
			//else if ((GPIO_22_nCDMMC & INREG32(&g_pGPIORegs->GEDR0)) || (GPIO_54_nCDMMC & INREG32(&g_pGPIORegs->GEDR1)))
			//{ // mask and clear interrupt
			//	CLRREG32(&g_pGPIORegs->GRER0, GPIO_22_nCDMMC);
			//	CLRREG32(&g_pGPIORegs->GFER0, GPIO_22_nCDMMC);
			//	OUTREG32(&g_pGPIORegs->GEDR0, GPIO_22_nCDMMC);
			//	CLRREG32(&g_pGPIORegs->GRER1, GPIO_54_nCDMMC);
			//	CLRREG32(&g_pGPIORegs->GFER1, GPIO_54_nCDMMC);
			//	OUTREG32(&g_pGPIORegs->GEDR1, GPIO_54_nCDMMC);
			//	irq = IRQ_GPIO84_2_CDMMC;
			//	break;
			//}
			else if (GPIO_26_S0_READY_nIREQ & INREG32(&g_pGPIORegs->GEDR0))
			{ // reset interrupt
//				SETREG32(&g_pGPIORegs->GFER0, GPIO_26_S0_READY_nIREQ);
				OUTREG32(&g_pGPIORegs->GEDR0, GPIO_26_S0_READY_nIREQ);
				irq = IRQ_GPIO84_2_PCCARD_S0;
				break;
			}
			else if (GPIO_27_S1_READY_nIREQ & INREG32(&g_pGPIORegs->GEDR0))
			{ // reset interrupt
//				SETREG32(&g_pGPIORegs->GFER0, GPIO_27_S1_READY_nIREQ);
				OUTREG32(&g_pGPIORegs->GEDR0, GPIO_27_S1_READY_nIREQ);
				irq = IRQ_GPIO84_2_PCCARD_S0;
				break;
			}
        break;
    default:
        break;
    }

	OALMSG(OAL_INTR&&OAL_VERBOSE, (L"-BSPIntrActiveIrq(%d)\r\n", irq));
    return irq;
}

//------------------------------------------------------------------------------


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩综合小视频| 久久99热狠狠色一区二区| 中文字幕av一区二区三区高 | 激情久久五月天| 高清国产午夜精品久久久久久| 91一区一区三区| 欧美一二三区精品| 欧美色老头old∨ideo| 在线观看日韩毛片| 精品精品欲导航| 亚洲精品一区二区三区蜜桃下载| 色综合视频在线观看| 成人18精品视频| 婷婷成人激情在线网| 亚洲国产精品久久不卡毛片| 欧美国产欧美亚州国产日韩mv天天看完整 | 成人激情免费网站| 欧美一二三区精品| 夜色激情一区二区| 毛片av一区二区| 99国产欧美久久久精品| 欧美日韩国产高清一区二区 | 成人激情免费电影网址| 欧美日韩一区二区三区视频| 色狠狠一区二区| 国产欧美日韩激情| 亚洲精品视频在线观看网站| 亚洲成av人影院| 经典三级在线一区| 精品一区二区免费视频| 99精品桃花视频在线观看| 国产性天天综合网| 一区二区三区四区不卡在线 | 日韩欧美视频在线| 日韩视频123| 日韩在线卡一卡二| 国产揄拍国内精品对白| 精品国产免费人成电影在线观看四季 | 成人av动漫网站| 久久久精品蜜桃| 一区二区三区丝袜| 欧美性感一类影片在线播放| 日韩毛片高清在线播放| 亚洲国产一区二区三区| 99久久99久久精品国产片果冻| 色婷婷久久一区二区三区麻豆| 久久久久久久综合色一本| 蜜臀久久99精品久久久画质超高清| 日本中文字幕不卡| 在线视频综合导航| 亚洲日本青草视频在线怡红院| 91在线精品一区二区| 亚洲品质自拍视频网站| 国产精品亚洲一区二区三区在线| 久久久国产精品午夜一区ai换脸| 日本女人一区二区三区| 99久久er热在这里只有精品15| ...av二区三区久久精品| 91视频免费看| 久久久久综合网| 风间由美中文字幕在线看视频国产欧美 | 国产99久久精品| 欧美一区二区成人| 国产精品自在在线| 国产精品久久久久一区| 国产麻豆欧美日韩一区| 亚洲女同ⅹxx女同tv| 国产精品白丝av| 欧美日韩一区二区三区在线| 日本不卡视频在线| 欧美日韩高清一区二区不卡| 亚洲国产精品一区二区久久恐怖片 | 91在线精品一区二区| 亚洲男人天堂一区| 成人精品视频一区二区三区 | 中文子幕无线码一区tr| 国产福利一区在线| 一区二区三国产精华液| 美腿丝袜在线亚洲一区| 日韩三级.com| 国产精品中文字幕日韩精品| 精品奇米国产一区二区三区| 亚洲毛片av在线| 日韩欧美激情一区| 国产一区二区在线观看免费 | 亚洲国产一区二区在线播放| 在线播放日韩导航| 国产精品一区专区| 亚洲欧美激情视频在线观看一区二区三区| 欧美日本在线播放| 成人av电影在线| 亚洲人成亚洲人成在线观看图片| 欧美视频在线一区二区三区 | 2017欧美狠狠色| 91浏览器打开| 亚洲人吸女人奶水| 久久新电视剧免费观看| 91成人国产精品| 久久91精品国产91久久小草| 欧美xxxxxxxxx| 亚洲成人福利片| 中文字幕第一区第二区| 欧美精品丝袜久久久中文字幕| 亚洲女与黑人做爰| 欧美国产精品v| 欧美无人高清视频在线观看| 岛国一区二区三区| 日韩**一区毛片| 久久免费国产精品| 日韩一级片在线观看| 日本福利一区二区| 青青草97国产精品免费观看 | 综合久久一区二区三区| 欧美年轻男男videosbes| 午夜精品在线看| 一区二区三区丝袜| 一区二区不卡在线播放 | 亚洲一区二区三区不卡国产欧美| 中文字幕不卡在线| 久久久影院官网| 国产校园另类小说区| 色爱区综合激月婷婷| 99久久精品国产一区二区三区| 亚洲视频精选在线| 国产丝袜在线精品| 六月丁香婷婷色狠狠久久| 午夜视频一区二区| 亚洲国产激情av| 精品国产伦一区二区三区免费 | 色婷婷国产精品| 丁香网亚洲国际| 国产一区二区免费看| 337p亚洲精品色噜噜| 18成人在线观看| 国产视频一区二区在线| 99精品视频一区| 99久久精品免费观看| 91天堂素人约啪| 成人福利视频在线| 一本在线高清不卡dvd| 欧美日韩美女一区二区| 欧美精品1区2区| 欧美电影一区二区三区| 91丨porny丨蝌蚪视频| 在线观看日韩毛片| 91精品在线麻豆| 欧美tk—视频vk| 亚洲国产精品ⅴa在线观看| 国产精品理论片| 中文字幕av不卡| 香蕉久久夜色精品国产使用方法 | 中文字幕不卡一区| 亚洲午夜一区二区三区| 一区二区三区成人| 日韩电影在线一区| 国产精品亚洲专一区二区三区| 成人免费视频视频| 欧美色成人综合| 精品国产自在久精品国产| 亚洲人成精品久久久久久| 国产成人精品亚洲日本在线桃色| 91在线精品一区二区三区| 一区二区三区在线观看国产| 麻豆精品国产传媒mv男同 | 在线观看精品一区| 日韩一区二区在线观看视频播放| 国产欧美中文在线| 一区二区欧美视频| 国产成人av一区| 欧美裸体一区二区三区| 欧美国产1区2区| 亚洲久本草在线中文字幕| 美女视频免费一区| 99久久精品情趣| 91福利精品视频| 欧美精品一区二区三区视频| 亚洲区小说区图片区qvod| 狠狠色综合色综合网络| 欧美伊人久久大香线蕉综合69| 久久蜜桃香蕉精品一区二区三区| 一区二区三区毛片| 成人的网站免费观看| 欧美一卡二卡三卡| 一区二区三区加勒比av| 高清日韩电视剧大全免费| 日韩一区二区三区免费观看| 国产女主播视频一区二区| 精品一区二区久久久| 欧美高清视频在线高清观看mv色露露十八 | 国产aⅴ综合色| 欧美大片一区二区| 一区二区日韩av| 91女人视频在线观看| 国产精品久久久久久久岛一牛影视 | 欧美电影免费观看高清完整版| 亚洲精品欧美在线| 91丝袜国产在线播放| 久久久精品综合| 国产老女人精品毛片久久| 51精品久久久久久久蜜臀|