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

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

?? ms2_backlight.cpp

?? 背光控制
?? CPP
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//
//------------------------------------------------------------------------------
//
//  File: ms2_backlight.c
//
//  Backlight PDD driver source code, Mainstone-specific
//
#include <windows.h>
#include <ceddk.h>
#include <bulverde.h>
//#include <Xllp_serialization.h>	// Added by LY in 2007/1/13
//#include <xllp_clkmgr.h>	// Added by LY in 2007/1/13

/* The next is added by LY in 2007/1/13 */
#define SHOW_FUNCTION_ENTRY	DEBUGMSG(1, (TEXT("<%s:%d>\r\n %s: Begin >>>\r\n"), TEXT(__FILE__), __LINE__, TEXT(__FUNCTION__)))
#define SHOW_FUNCTION_EXIT	DEBUGMSG(1, (TEXT("<%s:%d>\r\n %s: End   <<<\r\n"), TEXT(__FILE__), __LINE__, TEXT(__FUNCTION__)))
#define SHOW_COMPILING_INFO	DEBUGMSG(1, (TEXT("\r\n[%s]\t: Compiled at %s, %s\r\n\r\n"), TEXT(__FILE__), __TIME__, TEXT(__DATE__)))

#ifdef  RETAIL_DEBUG
#ifndef DEBUG
#define DEBUG 1
extern DBGPARAM dpCurSettings;
#undef DEBUGMSG
#define DEBUGMSG RETAILMSG
#endif
#endif

#ifdef DEBUG
#define ZONE_BACKLIGHT      DEBUGZONE(0)
#define ZONE_FUNCTION       DEBUGZONE(1)
#define ZONE_ERROR          DEBUGZONE(15)
#else
#define ZONE_BACKLIGHT      1
#define ZONE_FUNCTION       1
#define ZONE_ERROR          1
#endif

/* The next is added by LY in 2007/1/11 */
#define LCD_MAX_INTENSITY	100
CRITICAL_SECTION gcs_backlight;
//
// PWMx - Generic Structure
//
typedef struct
{
    unsigned long    pwcr;           //PWM Control Register 
    unsigned long    pwdr;           //PWM Duty Cycle Register 
    unsigned long    pwpr;           //PWM Period Control Register 
} PWM_REGS;
volatile PWM_REGS * PWMReg2 = NULL;
volatile unsigned int  * PCKEN = NULL;

volatile XLLP_GPIO_T * v_pGPIORegs = NULL;  // used to access hardware bits for bkl on/off


void PWM2SetupGPIOs(volatile XLLP_GPIO_T *pGPIO)	// Added by LY in 2007/1/13
{
// GPIO settings for LCD Controller
// Pin_name     Pin     Dir     Alt_fn
//-------------------------------------

// PWM2         79       out     3

//	XLLP_GPIO_T       *pGPIO;

	static XLLP_UINT32_T  outpins[]   =
	{
		1, 79
	};
	static XLLP_UINT32_T  altpins[]   =
	{
		1, 79
	};
	static XLLP_UINT32_T  altfunc[]   =
	{
		1, 3
	};

	SHOW_FUNCTION_ENTRY;

//	pGPIO = (XLLP_GPIO_T *) pXllpLCD->GPIO;
	XllpGpioSetDirectionOut((XLLP_GPIO_T *)pGPIO, (XLLP_UINT32_T *) outpins);
	XllpGpioSetAlternateFn((XLLP_GPIO_T *)pGPIO, (XLLP_UINT32_T *) altpins, (XLLP_UINT32_T *) altfunc);



	(void)pGPIO->GAFR0_L;

	SHOW_FUNCTION_EXIT;
}

//-----------------------------------------------------------------------------
//  Initialize hardware etc
//  Returned DWORD will be passed to BacklightDeInit and should be used to store context if necessary
//  pDeviceState should be set to the start state of the backlight (usually D0)
//

extern "C"
DWORD BacklightInit(LPCTSTR pContext, LPCVOID lpvBusContext, CEDEVICE_POWER_STATE *pDeviceState)
{
    PHYSICAL_ADDRESS ioPhysicalBase = {BULVERDE_BASE_REG_PA_GPIO, 0 };
    PHYSICAL_ADDRESS pwmPhysicalBase = {(BULVERDE_BASE_REG_PA_PWM0_2+0x10), 0 };	// Added by LY in 2007/1/13
    PHYSICAL_ADDRESS ckenPhysicalBase = {(0x41300004), 0 };	// Added by LY in 2007/1/13
    v_pGPIORegs = (volatile XLLP_GPIO_T *)MmMapIoSpace(ioPhysicalBase, sizeof(XLLP_GPIO_T),FALSE);
    if (!v_pGPIORegs)
    {
        return FALSE;
    }
    PWMReg2 = (volatile PWM_REGS *)MmMapIoSpace(pwmPhysicalBase, sizeof(PWM_REGS),FALSE);	// Added by LY in 2007/1/13
    if (!PWMReg2)
    {
        return FALSE;
    }
    PCKEN = (volatile unsigned int *)MmMapIoSpace(ckenPhysicalBase, sizeof(unsigned int),FALSE);	// Added by LY in 2007/1/13
    if (!PCKEN)
    {
        return FALSE;
    }

    DEBUGMSG(ZONE_BACKLIGHT, (TEXT("BKL: Init\r\n")));
    InitializeCriticalSection(&gcs_backlight);
//    v_pGPIORegs->GPCR0 |= XLLP_GPIO_BIT_PWM_OUT0; // turn backlight off. Masked by LY in 2007/1/9
//    v_pGPIORegs->GPSR2 |= XLLP_GPIO_BIT_PWM_OUT2; // turn backlight off. Added by LY in 2007/1/9. Masked by LY in 2007/1/15
    *pDeviceState = D4;

    return TRUE;
}

extern "C"
void BacklightDeInit(DWORD dwContext)
{
    DEBUGMSG(ZONE_BACKLIGHT, (TEXT("BKL: De-Init\r\n")));
    if (v_pGPIORegs != NULL) {
       MmUnmapIoSpace((PVOID)v_pGPIORegs, sizeof(XLLP_GPIO_T));
    }
    if (PWMReg2 != NULL) {	// Added by LY in 2007/1/13
       MmUnmapIoSpace((PVOID)PWMReg2, sizeof(PWM_REGS));
    }
    if (PCKEN != NULL) {	// Added by LY in 2007/1/13
       MmUnmapIoSpace((PVOID)PCKEN, sizeof(unsigned int));
    }
    DeleteCriticalSection(&gcs_backlight);
    return;
}

extern "C"
BOOL BackLightSetState(DWORD dwContext, CEDEVICE_POWER_STATE state)
{
    // sets the backlight state (turns the backlight on and off)
    DEBUGMSG(ZONE_FUNCTION, (L"+BackLightSetState(0x%08x)\r\n", (DWORD) state));

    switch (state)
    {
        case D0:
 //           v_pGPIORegs->GPSR0 |= XLLP_GPIO_BIT_PWM_OUT0;	// Masked by LY in 2007/1/9
 	     v_pGPIORegs->GPCR2 |= XLLP_GPIO_BIT_PWM_OUT2;	// Added by LY in 2007/1/9
            // Keypad backlight
            v_pGPIORegs->GPSR0 |= XLLP_GPIO_BIT(22);
            DEBUGMSG(ZONE_FUNCTION, (L"+BackLightSetState - ON\r\n"));
            break;
        case D1:
        case D2:
        case D3:
        case D4:
 //           v_pGPIORegs->GPCR0 |= XLLP_GPIO_BIT_PWM_OUT0;		// Masked by LY in 2007/1/9
 //	     v_pGPIORegs->GPSR2 |= XLLP_GPIO_BIT_PWM_OUT2;		// Added by LY in 2007/1/9. Masked by LY in 2007/1/15.
            // Keypad backlight
            v_pGPIORegs->GPCR0 |= XLLP_GPIO_BIT(22);
            DEBUGMSG(ZONE_FUNCTION, (L"+BackLightSetState - OFF\r\n"));
            break;
        default:
            RETAILMSG(ZONE_ERROR, (L"+BackLightSetState - Unsupported power state!\r\n"));
            return FALSE;
    }
    return TRUE;
}

extern "C"
UCHAR BacklightGetSupportedStates()
{
    return DX_MASK(D0) | DX_MASK(D4);     //support D0, D4 (ON, OFF)
}

extern "C"
void ChangeBacklight(unsigned int  brightness)	// Added by LY in 2007/1/11
{
	unsigned int intensity_max = 0x64;
	unsigned int intensity;
	if(brightness > LCD_MAX_INTENSITY)
		intensity = LCD_MAX_INTENSITY;
	else 
		intensity = brightness;

	EnterCriticalSection(&gcs_backlight);
	  (*PCKEN) |= XLLP_CLKEN_PWM0_2;	// Enable the PWM2 CLK
	  PWMReg2->pwcr= 0;
	  PWMReg2->pwpr= intensity_max;
	  PWMReg2->pwdr= intensity_max * intensity / LCD_MAX_INTENSITY;
	LeaveCriticalSection(&gcs_backlight);
}
extern "C"
void BacklightSetValue( )	// Added by LY in 2007/1/11
{
	LONG returnvalue;
	unsigned int  brightness;
	HKEY hkey = NULL;
	DWORD dwType;
	DWORD brightnesssize;
	if(ERROR_SUCCESS != (returnvalue = RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("\\SOFTWARE\\Microsoft\\Shell\\Extensions\\Controls Folder\\Backlight\\Shellex\\PropertySheetHandlers\\{B7120BAA-68AE-4a6c-B066-5A9E52897876}\\Backlight Brightness"), 0, 0, &hkey)))
	{
		DEBUGMSG(TRUE, (TEXT(" Open Registry Key of Backlight Brightness Fail!The Operation return value is %d \n"), returnvalue));
	}
	else
	{
		returnvalue = RegQueryValueEx(hkey, TEXT("Brightness"), NULL, &dwType, (LPBYTE)&brightness, &brightnesssize);
		if(returnvalue != ERROR_SUCCESS)
		{
			if(returnvalue == ERROR_MORE_DATA)	// Continue to read
			{
				returnvalue = RegQueryValueEx(hkey, TEXT("Brightness"), NULL, &dwType, (LPBYTE)&brightness, &brightnesssize);
				if(returnvalue != ERROR_SUCCESS)
				{
					DEBUGMSG(TRUE, (TEXT(" Query Registry Key of Backlight Brightness Fail!The Operation return value is %d \n"), returnvalue));
					goto Error;					
				}
				else
					goto Changebacklight;
			}
		}
Changebacklight:
		PWM2SetupGPIOs(v_pGPIORegs);
		ChangeBacklight( brightness);

		
	}
Error:
	RegCloseKey(hkey);
}
extern "C"
DWORD BacklightIOControl(DWORD dwOpenContext, DWORD dwIoControlCode, LPBYTE lpInBuf,
                   DWORD nInBufSize, LPBYTE lpOutBuf, DWORD nOutBufSize,
                   LPDWORD lpBytesReturned)
{
    // For IOCTls that MDD doesn't know. ie non-pm IOCTLs
    return ERROR_NOT_SUPPORTED;
}

extern "C"
void BacklightRegChanged()
{
    // Called when the MDD gets a backlight registry changed event
    // eg: read brightness settings from registry and update backlight accordingly
    BacklightSetValue();
    return;
}

extern "C"
void BacklightPwrSrcChanged(BOOL fOnAC)
{
    // Called when the MDD gets a power source changed (AC->DC or vice-versa) event
    // fOnAC will indicate whether the power source is now AC. TRUE->AC FALSE->Battery
    // eg: update brightness of backlight according to user settings
    BacklightSetValue();
    return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美中文字幕一二三区视频| 亚洲特级片在线| 国产日韩欧美一区二区三区乱码 | 国产一区在线不卡| 色综合亚洲欧洲| xnxx国产精品| 日本一区中文字幕| 91女人视频在线观看| 久久这里只有精品6| 午夜影院在线观看欧美| 高清av一区二区| 91精品国产综合久久香蕉麻豆| 日韩理论电影院| 国产美女在线观看一区| 91精品国产一区二区三区| 亚洲精品一二三| 岛国av在线一区| 精品久久久三级丝袜| 亚洲3atv精品一区二区三区| 成人毛片老司机大片| 久久久久亚洲蜜桃| 一本久久精品一区二区| 久久综合九色综合久久久精品综合| 亚洲一区免费在线观看| 99久久精品免费看国产免费软件| 精品三级在线看| 日韩中文字幕av电影| 在线精品国精品国产尤物884a | 678五月天丁香亚洲综合网| **欧美大码日韩| 成人毛片在线观看| 欧美国产日本韩| 国产成人自拍在线| 久久综合九色综合97_久久久| 免播放器亚洲一区| 欧美久久久一区| 午夜视频一区在线观看| 欧美日韩久久久一区| 亚洲观看高清完整版在线观看 | 在线播放视频一区| 亚洲高清免费观看| 欧美视频在线观看一区| 亚洲国产视频网站| 在线成人小视频| 男男gaygay亚洲| 欧美一区二区播放| 久久69国产一区二区蜜臀| 日韩一级视频免费观看在线| 久久99久久久欧美国产| 久久综合色综合88| 成人天堂资源www在线| 国产精品视频九色porn| 99久久99久久免费精品蜜臀| 亚洲乱码日产精品bd| 色婷婷av一区二区| 日韩高清一区在线| 2020日本不卡一区二区视频| aa级大片欧美| 午夜精品免费在线| 久久综合五月天婷婷伊人| www.av亚洲| 亚洲一区日韩精品中文字幕| 欧美一级高清片| 成人小视频免费观看| 亚洲激情六月丁香| 日韩欧美国产一区二区三区| 成人免费视频caoporn| 亚洲激情图片一区| 精品国产一区二区三区不卡| 成人av第一页| 免费在线观看一区| 国产精品理伦片| 欧美日韩激情在线| 国产成人免费高清| 亚洲一区免费观看| 国产免费久久精品| 欧美精品xxxxbbbb| 成人看片黄a免费看在线| 亚洲永久免费视频| 久久久精品国产免费观看同学| 日本精品免费观看高清观看| 久久精品国产99久久6| 亚洲色欲色欲www| 欧美大白屁股肥臀xxxxxx| 99精品欧美一区二区蜜桃免费| 蜜臀91精品一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 欧美老肥妇做.爰bbww视频| 粉嫩av亚洲一区二区图片| 亚洲bt欧美bt精品| 亚洲天堂久久久久久久| 2020日本不卡一区二区视频| 欧美日韩精品二区第二页| 99精品视频一区二区三区| 久色婷婷小香蕉久久| 亚洲一区二区免费视频| 国产精品久久久久精k8| 久久综合国产精品| 日韩精品一区二区三区在线播放 | 日韩视频免费直播| 在线免费观看视频一区| 成人av高清在线| 国产成人午夜精品影院观看视频 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩欧美久久久| 欧美一区二区三区在线电影| 91丨九色丨尤物| 成人国产在线观看| 成人av高清在线| 国产成人高清视频| 国产精品456| 国产一区二区三区视频在线播放| 日韩av电影免费观看高清完整版 | 欧美视频你懂的| 91久久免费观看| 色香色香欲天天天影视综合网| 成人一区在线观看| 丁香激情综合国产| 成人性生交大片免费| 成人毛片在线观看| 成人免费看黄yyy456| 99国产欧美久久久精品| 91一区二区三区在线观看| youjizz国产精品| 日韩欧美视频在线| 欧美精品一区二区高清在线观看| 欧美一区二区福利在线| 日韩精品中文字幕一区| 精品国产乱码久久久久久图片 | 国产色一区二区| 久久久久国产精品麻豆 | 制服丝袜亚洲播放| 欧美一区二区三区日韩| 日韩午夜在线观看视频| 欧美成va人片在线观看| 久久精品人人做| 欧美国产乱子伦| 亚洲欧洲av色图| 亚洲一级在线观看| 天堂成人国产精品一区| 久久精品国产免费| 岛国精品在线观看| 在线中文字幕一区二区| 91精品国产手机| 久久伊99综合婷婷久久伊| 国产精品久久一级| 午夜激情一区二区三区| 狠狠狠色丁香婷婷综合激情| 成人激情免费电影网址| 色视频欧美一区二区三区| 在线综合+亚洲+欧美中文字幕| 久久综合狠狠综合| 一区二区久久久久久| 黄页视频在线91| 91视频观看视频| 日韩女优av电影| 亚洲免费av高清| 久久机这里只有精品| 91麻豆.com| 精品粉嫩超白一线天av| 亚洲精品老司机| 国内欧美视频一区二区| 色婷婷一区二区| 久久久综合网站| 午夜伊人狠狠久久| 成av人片一区二区| 精品嫩草影院久久| 亚洲国产裸拍裸体视频在线观看乱了| 国产一区在线精品| 欧美日本一区二区三区四区| 国产精品嫩草影院com| 久久国产精品色| 欧美日韩黄色一区二区| 中文字幕中文乱码欧美一区二区| 亚洲 欧美综合在线网络| 午夜电影久久久| 国产91精品入口| 欧美日韩一区二区三区高清| 国产精品欧美一级免费| 日韩一区精品字幕| www.一区二区| 久久久夜色精品亚洲| 亚洲国产一二三| 国v精品久久久网| 日韩手机在线导航| 亚洲欧美日韩在线播放| 精品一区二区三区在线观看国产 | 精品视频在线免费观看| 亚洲日本在线天堂| 国产麻豆精品一区二区| 69久久夜色精品国产69蝌蚪网| 亚洲自拍偷拍网站| 成人免费视频视频| www亚洲一区| 国产乱国产乱300精品| 欧美一区二区三区婷婷月色 | 99riav一区二区三区| www激情久久| 奇米影视一区二区三区小说| 91精品一区二区三区在线观看|