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

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

?? ch7024.cpp

?? 基于AU1200平臺的TVOUT芯片CH7024芯片的驅(qū)動(dòng)
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// This is a Sample Driver
#include <windows.h>
#include <CEDDK.h>
#include <nkintr.h>
#include <platform.h>
#include <bceddk.h>
#include "ldrarg.h"
#include "CH7024.h"
#include "argon.h"

//
// Structure for storing device instance data.  There is one of these per
// instance of a device.  We could have 2 devices in the system, in which case
// there would be two of these structures.
//
typedef struct _DEVICE_INSTANCE {
	ULONG               SysIntr;
	HANDLE              hSmbus;
	HANDLE              hIsrEvent;
	HANDLE              hCvbsThread;
	HANDLE              hCh7024Ready;
} DEVICE_INSTANCE, *PDEVICE_INSTANCE;

#pragma pack(1)
typedef struct {
	UCHAR	Address;
	UCHAR   Register;
	ULONG   DataSize;
	UCHAR   Data[1];
} SMBUS_TRANSFER;	
#pragma pack()

//
// IOCTLS used to access the driver
//
enum {
    IOCTL_SMBUS_FMRCV_INIT = 0x80012000,  // some arbirary base
    IOCTL_SMBUS_FMRCV_DEINIT,
    IOCTL_SMBUS_READDATA,                 // some arbirary base
    IOCTL_SMBUS_WRITEDATA
};

UCHAR ch7024Regs[][64][2] = {
    {   // 480*272 master  total 487*322 9.4MHz (V 4, 2, 1) (H 45, 2, 3)                
	    {0x04, 0x0c},   // 1  Set FPD=0 to power up CH7024, power dowm DAC0, DAC1
		{0x0A, 0x10},   // 2 Set TV_BP=1
		{0x0B, 0x03},   // 4  Set crystal 12MHz  
		{0x0C, 0x00},   //    DUCVBS  singal CVBS
		{0x0D, 0x00},   // 9  set input data format RGB 565
		{0x0E, 0x80},   // 10 set sync control bits,DES,VPO,HPO,SYO, Set POUTEN to select clock master/slave, we are slave
		{0x0F, 0x00},   // 5  set XCH=0
		{0x11, 0x80},   // 11 set input timing achieving method,HVAUTO = 1, by this way the graphic controller  only needs to send H sync V sync
	    {0x1C, 0x90},     // 7  ACIV, select sub-carrier generation, DOTCRB(bit0) enables TV Dot Crawl reduction when set to '1'
	    {0x24, 0x03},     //  A
	    {0x25, 0x22},
	    {0x26, 0x22},
	    {0x27, 0x22},
		{0x28, 0x0f},   //    P
		{0x29, 0x67},
		{0x2A, 0xa0}, 
		{0x2B, 0x1b},   //    N
		{0x2C, 0x7e},
		{0x2D, 0x48},   
		{0x2E, 0x2c},   //    T
		{0x2F, 0x0a},   //    PLL
		{0x30, 0x12},   
		{0x31, 0x13},
	    {0x34, 0x01},   //    SCFREQ
		{0x35, 0x31},
		{0x36, 0x74},
		{0x37, 0xae},
		{0x63, 0xc0},   // 5  double termination(both 75ohm on PCB and TV side)
		{0x21, 0x81},   // VP bit[9:2]
		{0x20, 0x03},   // VP bit[1:0] adjust  moved 7 pixels upward
	   	{0x06, 0x20},   // saturation
	   	{0x23, 0x7a},   // HP bit[9:2] moved 8 pixels left
		{0x22, 0x00},   // HP bit[1:0]
	   	{0x06, 0x1b},   // saturation
	   	{0x08, 0x6d},   // brightness
	   	{0x1E, 0x04},   // horizontal scaling bit[10:8]
	   	{0x1F, 0xFE},   // horizontal scaling bit[7:0]
	   	{0x04, 0x08},   // power up DAC0
	   	{0xFF, 0x00},   // Over flag
	},
    {   //640*480  master total 705*568 24MHz P-clock
	    {0x04, 0x0c},   // 1  Set FPD=0 to power up CH7024, power dowm DAC0, DAC1
		{0x0A, 0x10},   // 2 Set TV_BP=1
		{0x0B, 0x03},   // 4  Set crystal 12MHz  
		{0x0C, 0x00},   //    DUCVBS  singal CVBS
		{0x0D, 0x00},   // 9  set input data format RGB 565
		{0x0E, 0x80},   // 10 set sync control bits,DES,VPO,HPO,SYO, Set POUTEN to select clock master/slave, we are slave
		{0x0F, 0x00},   // 5  set XCH=0
	    {0x1C, 0x90},   // 7  ACIV, select sub-carrier generation
	    {0x24, 0x04},     //  A
	    {0x25, 0x00},
	    {0x26, 0x00},
	    {0x27, 0x00},
		{0x28, 0x31},   //    P
		{0x29, 0x30},
		{0x2A, 0x80}, 
		{0x2B, 0x36},   //    N
		{0x2C, 0xfc},
		{0x2D, 0x90},   
		{0x2E, 0x38},   //    T
		{0x2F, 0x02},   //    PLL
		{0x30, 0x1b},   
		{0x31, 0x12},
	    {0x34, 0x01},   //    SCFREQ
		{0x35, 0x31},
		{0x36, 0x74},
		{0x37, 0xae},
		{0x63, 0xc0},   // 5  double termination(both 75ohm on PCB and TV side)   							
		{0x11, 0x80},   // 11 set input timing achieving method,HVAUTO = 1, by this way the graphic controller  only needs to send H sync V sync
		{0x21, 0x7F},   // VP bit[9:2]
		{0x20, 0x00},   // VP bit[1:0] adjust  moved 7 pixels downward
	   	{0x06, 0x20},   // saturation
	   	{0x23, 0x7a},   // HP bit[9:2] moved 8 pixels left
		{0x22, 0x00},   // HP bit[1:0]
	   	{0x06, 0x1b},   // saturation
	   	{0x08, 0x6d},   // brightness
	   	{0x1E, 0x04},   // horizontal scaling bit[10:8]
	   	{0x1F, 0xFE},   // horizontal scaling bit[7:0]
	   	{0x04, 0x08},   // power up DAC0
	   	{0xFF, 0x00},   // Over flag
    },
};


/*-----------------------------------------------------------------------------

  功    能:讓CH7024進(jìn)入power off 狀態(tài)
  
  參數(shù)說明:

    
  返 回 值:成功返回 表的位置 
            反之     0xff

      
  說    明:JOIN (注釋)         
			
		  
------------------------------------------------------------------------------*/
static BOOL PoweOffCH7024(PDEVICE_INSTANCE pDeviceInst, BOOL bPoweDown, UCHAR pwrState)
{
    BOOL bRel = TRUE;
    ULONG size = 10;
	ULONG Tmp = 0 ;
	LONG valueOut = 0;
	SMBUS_TRANSFER* pValueIn = NULL;
    HANDLE hSmb = pDeviceInst->hSmbus;
	UCHAR initState;

	RETAILMSG(1, (TEXT("--TVO:PoweOffCH7024 aaaa\r\n")));
	pValueIn = (SMBUS_TRANSFER*) malloc(size);
	memset(pValueIn, 0, sizeof(*pValueIn));
	RETAILMSG(1, (TEXT("--TVO:PoweOffCH7024 bbbb\r\n")));

	pValueIn->Address = 0x76;
	pValueIn->Register = 0x04;
	pValueIn->Data[0] = 0x00;  
	pValueIn->DataSize = 1;
	RETAILMSG(1, (TEXT("--TVO:PoweOffCH7024 cccc\r\n")));
	bRel = DeviceIoControl(hSmb, IOCTL_SMBUS_READDATA, (PUCHAR)pValueIn, size, &initState, sizeof(initState), &Tmp, NULL);
	RETAILMSG(1, (TEXT("--TVO:PoweOffCH7024 dddd\r\n")));
	if(!bRel) {   // 如果讀失敗再試一次
        bRel = DeviceIoControl(hSmb, IOCTL_SMBUS_READDATA, (PUCHAR)pValueIn, size, &initState, sizeof(initState), &Tmp, NULL);
	}

	RETAILMSG(1, (TEXT("--TVO:PoweOffCH7024 eeee\r\n")));

    if(bPoweDown) {
		// Set FPD = 0 bit[0] to power up ch7024
		pValueIn->Address = 0x76;
		pValueIn->Register = 0x04;
		pValueIn->Data[0] = (pwrState | initState);  // power down ch7024 ,DAC0 and DAC1
		pValueIn->DataSize = 1;
		bRel = DeviceIoControl(hSmb,
						        IOCTL_SMBUS_WRITEDATA,
						        (PUCHAR)pValueIn,
						        size,
						        &valueOut,
						        sizeof(valueOut),
						        &Tmp,
						        NULL);
    }
	else {
        pValueIn->Address = 0x76;
		pValueIn->Register = 0x04;
		pValueIn->Data[0] = (~pwrState & initState); // power up ch7024 and DAC0
		pValueIn->DataSize = 1;
		bRel = DeviceIoControl(hSmb,
						        IOCTL_SMBUS_WRITEDATA,
						        (PUCHAR)pValueIn,
						        size,
						        &valueOut,
						        sizeof(valueOut),
						        &Tmp,
						        NULL);

	}

	
	if(pValueIn) {
		free(pValueIn);
	}

	RETAILMSG(1, (TEXT("--TVO:PoweOffCH7024\r\n")));

    return bRel;
}



/*-----------------------------------------------------------------------------

  功    能:取當(dāng)前顯示驅(qū)動(dòng)的參數(shù)在ch7024Regs表的位置
  
  參數(shù)說明:

    
  返 回 值:成功返回 表的位置 
            反之     0xff

      
  說    明:JOIN (注釋)         
			
		  
------------------------------------------------------------------------------*/
static UCHAR GetCH7024RegsPos(void)
{
    BOOT_ARGS *pBootArgs = (BOOT_ARGS*)(BOOT_ARG_PTR + KSEG1_OFFSET);
	UCHAR panelNum = pBootArgs->lcdArg[1].panelNum;   // Current panel setlect;
	UCHAR item = 0xff;

	if(panelNum == 0x0d) {
        item = 0;
	}
	else if(panelNum == 0x0f) {
        item = 1;
	}
	else {
        item = 0xff;
	}

    return item;
}

/*-----------------------------------------------------------------------------

  功    能:檢查CVBS輸出線是否插入CVBS輸出口
  
  參數(shù)說明:

    
  返 回 值:成功返回 OK 
            反之     NO

      
  說    明:JOIN (注釋)         
			
		  
------------------------------------------------------------------------------*/
static BOOL IsInsertCVBS(PDEVICE_INSTANCE pDeviceInst, UCHAR item)
{
    #if 0
    LONG valueOut = 0;
	ULONG Tmp = 0 ;
	ULONG size = 10;
	SMBUS_TRANSFER* pValueIn = NULL;
    HANDLE hSmb = pDeviceInst->hSmbus;
	BOOL RetVal = FALSE;
	
	pValueIn = (SMBUS_TRANSFER*) malloc(size);
	memset(pValueIn, 0, sizeof(*pValueIn));

	/*pValueIn->Address = 0x76;
	pValueIn->Register = 0x04;
	pValueIn->Data[0] = 0x00;  // Set FPD = 0 bit[0] to power up ch7024
	pValueIn->DataSize = 1;
	RetVal = DeviceIoControl(hSmb,
					        IOCTL_SMBUS_WRITEDATA,
					        (PUCHAR)pValueIn,
					        size,
					        &valueOut,
					        sizeof(valueOut),
					        &Tmp,
					        NULL);*/

	pValueIn->Address = 0x76;
	pValueIn->Register = 0x63;
	pValueIn->Data[0] = 0x02;  // Set Single termination(no 75ohm On PCB) bit[1]
	pValueIn->DataSize = 1;
	RetVal = DeviceIoControl(hSmb,
					        IOCTL_SMBUS_WRITEDATA,
					        (PUCHAR)pValueIn,
					        size,
					        &valueOut,
					        sizeof(valueOut),
					        &Tmp,
					        NULL);

	pValueIn->Address = 0x76;
	pValueIn->Register = 0x62;
	pValueIn->Data[0] = 0x80;  // Set SESEEN to 1 bit[7]
	pValueIn->DataSize = 1;
	RetVal = DeviceIoControl(hSmb,
					        IOCTL_SMBUS_WRITEDATA,
					        (PUCHAR)pValueIn,
					        size,
					        &valueOut,
					        sizeof(valueOut),
					        &Tmp,
					        NULL);

	pValueIn->Address = 0x76;
	pValueIn->Register = 0x7E;
	pValueIn->Data[0] = 0x00;  
	pValueIn->DataSize = 1;
	RetVal = DeviceIoControl(hSmb,
					        IOCTL_SMBUS_READDATA,
					        (PUCHAR)pValueIn,
					        size,
					        &valueOut,
					        sizeof(valueOut),
					        &Tmp,
					        NULL);
    
	RETAILMSG(1,(TEXT("IsInsertCVBS:7024 reg 0x7E = 0x%x\r\n"), valueOut));
	
    free(pValueIn);
	
	if( ((UCHAR)valueOut & 0x03) == 0x01) {  //single composite output is connected
        return TRUE;
	}
	else {
        return FALSE;
	}
	#endif
	
    return TRUE;	
}

/*-----------------------------------------------------------------------------

  功    能:通過Smbus總線配置7024
  
  參數(shù)說明:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看下载| 色欧美88888久久久久久影院| 中文字幕一区二区视频| 精品日韩欧美一区二区| 欧美性猛交xxxx黑人交| av高清久久久| 国产精品99久| 久久精品国产精品青草| 天堂成人国产精品一区| 亚洲欧美日韩国产中文在线| 国产精品天天摸av网| 久久夜色精品国产噜噜av| 日韩情涩欧美日韩视频| 欧美亚洲丝袜传媒另类| 色av成人天堂桃色av| 99久久精品免费| caoporm超碰国产精品| 国产99精品国产| 国产成人99久久亚洲综合精品| 偷窥少妇高潮呻吟av久久免费| 一区二区三区精品视频在线| 伊人性伊人情综合网| 亚洲欧美日韩国产综合在线 | 日韩一级片在线播放| 7777精品久久久大香线蕉| 欧美在线小视频| 欧美手机在线视频| 欧美少妇xxx| 欧美丰满高潮xxxx喷水动漫| 日韩一区二区高清| 欧美精品日韩一区| 欧美一区二区三区免费在线看| 91精品欧美综合在线观看最新| 69久久99精品久久久久婷婷| 欧美变态口味重另类| 久久久精品影视| 国产精品入口麻豆九色| √…a在线天堂一区| 亚洲国产一区二区三区青草影视| 亚洲第一电影网| 日韩电影在线免费观看| 免费黄网站欧美| 国产成人精品免费在线| 91在线视频在线| 欧洲国内综合视频| 欧美一卡二卡在线| 国产乱码精品一区二区三区忘忧草 | 国产精品网友自拍| 日本一区二区三区dvd视频在线| 国产丝袜美腿一区二区三区| 中文字幕一区av| 亚洲成人综合在线| 麻豆精品在线播放| 成人午夜视频在线| 欧美性生活影院| 制服视频三区第一页精品| 精品国内片67194| 国产精品黄色在线观看| 一区二区三区四区不卡在线| 免费欧美在线视频| 不卡一区二区三区四区| 在线观看国产日韩| 91精品欧美久久久久久动漫| 国产欧美精品一区| 亚洲国产毛片aaaaa无费看| 精品在线播放午夜| 91小宝寻花一区二区三区| 91精品一区二区三区久久久久久| 欧美一区二区三区成人| 国产精品视频第一区| 日韩成人免费电影| av在线不卡电影| 日韩欧美国产午夜精品| 亚洲欧美日韩国产一区二区三区| 日本亚洲一区二区| 91浏览器在线视频| 2欧美一区二区三区在线观看视频| 国产欧美日韩不卡| 青娱乐精品视频在线| 91蝌蚪porny成人天涯| 欧美日韩高清一区二区| 久久精品水蜜桃av综合天堂| 亚洲国产精品欧美一二99| 国产成人精品免费在线| 911国产精品| 久久久久久久久岛国免费| 偷拍自拍另类欧美| 色婷婷狠狠综合| 日韩欧美在线不卡| 中文字幕在线一区| 久久国产精品第一页| 欧美三级日韩在线| 亚洲色图欧美偷拍| 国产精品亚洲综合一区在线观看| 欧美精品在欧美一区二区少妇| 国产精品久久久久一区二区三区共 | 91精品在线麻豆| 一片黄亚洲嫩模| 国产麻豆成人精品| 日韩亚洲欧美在线| 午夜成人免费视频| 色狠狠综合天天综合综合| 国产拍揄自揄精品视频麻豆| 美女精品一区二区| 欧美男同性恋视频网站| 国产精品久久久爽爽爽麻豆色哟哟| 久久99精品国产麻豆婷婷| 91精品国产乱码| 亚洲国产aⅴ成人精品无吗| 99久久婷婷国产| 欧美国产综合色视频| 激情综合色丁香一区二区| 色猫猫国产区一区二在线视频| 国产喷白浆一区二区三区| 国产一区二区网址| 精品国产91九色蝌蚪| 老司机免费视频一区二区| 91精品国产麻豆国产自产在线| 亚洲女女做受ⅹxx高潮| 97久久超碰国产精品电影| 国产精品久久久久久久裸模 | 国产成人av在线影院| 欧美日韩国产综合草草| 亚洲国产sm捆绑调教视频 | 成人看片黄a免费看在线| 国产美女在线观看一区| 精品免费国产一区二区三区四区| 精品一区二区在线播放| 国产欧美一区二区精品秋霞影院| av在线一区二区三区| 亚洲一卡二卡三卡四卡无卡久久| 337p亚洲精品色噜噜| 国产一区二区三区四区五区美女 | 亚洲私人黄色宅男| 欧美日韩中文一区| 激情综合五月婷婷| 国产精品成人一区二区艾草| 欧美日韩久久久一区| 国产又粗又猛又爽又黄91精品| 欧美国产欧美综合| 欧美视频一区二区三区在线观看| 强制捆绑调教一区二区| 国产精品欧美久久久久无广告| 在线免费观看视频一区| 久久成人综合网| 亚洲少妇30p| 日韩欧美国产三级| gogogo免费视频观看亚洲一| 天天综合日日夜夜精品| 国产欧美日韩精品一区| 欧美日韩成人综合在线一区二区| 国产精品一区二区果冻传媒| 亚洲靠逼com| 26uuu国产在线精品一区二区| 91视频一区二区| 久久狠狠亚洲综合| 亚洲免费在线电影| 精品捆绑美女sm三区| 97精品国产97久久久久久久久久久久| 天天综合色天天| 日韩一区中文字幕| 欧美成人激情免费网| 91成人网在线| 国产成人综合网| 热久久久久久久| 亚洲女厕所小便bbb| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩一区精品| 99久久伊人精品| 国内成人精品2018免费看| 亚洲在线一区二区三区| 国产三级精品三级| 日韩一区和二区| 欧美日韩精品综合在线| 成人激情黄色小说| 黑人精品欧美一区二区蜜桃| 亚洲高清免费一级二级三级| 国产精品国产a| 精品免费一区二区三区| 538prom精品视频线放| 91日韩在线专区| 成人av先锋影音| 国产98色在线|日韩| 国产在线麻豆精品观看| 日本亚洲电影天堂| 亚洲va天堂va国产va久| 亚洲女爱视频在线| 国产精品午夜免费| 久久久美女毛片| 精品国产1区二区| 欧美成人官网二区| 日韩欧美精品三级| 欧美一级生活片| 欧美日韩国产不卡| 欧美日韩在线免费视频| 色噜噜偷拍精品综合在线| 99久久国产综合精品色伊| 国产精品99久久久久久久女警| 久久激情五月激情| 九九九久久久精品|