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

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

?? modemif_test.c

?? 三星 s3c6400測試代碼
?? C
字號:

//===================================================================
// NAME		: modemif_test.c	
// DESC		: S3C6400X DPSRAM test 
// History	: 01.03.2007 ver 0.0 by JAE GEUN. SONG
//===================================================================

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "option.h"
#include "sfr6400.h"
#include "def.h"
#include "intc.h"
#include "library.h"
#include "sysc.h"
#include "nand.h"
#include "modemif.h"
#include "gpio.h"
#include "timer.h"
#include "dma.h"


static DMAC oModemif0;

extern volatile int g_ApDataCnt;
extern volatile int g_MsmDataCnt;
extern volatile int g_DmaDone;
extern volatile int g_MsmReadDone;


//MODEM DMA ISR
void __irq Dma0Done_MSM(void)
{
  	DMACH_ClearIntPending(&oModemif0);
	//printf ("DMA ISR %d\n", g_DmaDone);

	if (g_DmaDone == 0)
		Outp16(DPSRAM_BASE_MODEM+INT2AP_ADR, 0xff00);

	else 
		Outp16(DPSRAM_BASE_MODEM+INT2AP_ADR, 0xee00);
	
	g_DmaDone++;
	
	DMACH_Setup(DMA_A, 0x0, MSM_TX_BUFFER+(g_DmaDone*0x1000) , 0, MSM_TX_Queue, 0, WORD, 0x400, DEMAND, MEM, MEM, BURST4, &oModemif0);

	INTC_ClearVectAddr();
}

void Test_AP_TX(void)
{

	u32 length,i;
	u32	*txdata;
	u32 *aptx_buf;

	//Message
	printf("AP TX\n");

	g_MsmReadDone = 0;
	
	txdata = (u32 *)(AP_TX_BUFFER);

	// Modem i/f setting
	MODEMIF_AP_Init(true, true);

	// AP TX Buffer data
	for(length=0 ; length <= (AP_TX_BUFLEN*BLK_COUNT) ; length++)
	{
		*(txdata+length) = length;
	}

	Outp16(DPSRAM_BASE_AP+INT2MSM_ADR, 0x00ff);
	while(!g_MsmReadDone);

	for(i=0 ; i<BLK_COUNT ; i++)
	{
		g_MsmReadDone = 0;
		
		// TX Buffer pointer setting
		txdata = (u32 *)(AP_TX_BUFFER+(i*AP_TX_BUFLEN));
		aptx_buf = (u32 *)(AP_TX_Queue);

		for (length = 0 ; length < AP_TX_BUFLEN ; length++)
		{
			*(u32 *)(aptx_buf ++) = *(txdata++);
		}

		Outp16(DPSRAM_BASE_AP+INT2MSM_ADR, 0x00ee);
		
		while(!g_MsmReadDone);
		printf(" i = 0x%x\n", i);
	}

	Outp16(DPSRAM_BASE+INT2MSM_ADR, 0x0011);
	printf("AP TX END\n");

}

void Test_AP_RX(void)
{
	g_ApDataCnt = 0;
	
	MODEMIF_AP_Init(true, true);

	while(!(g_ApDataCnt == DMA_COUNT));
	//printf("cnt = 0x%x, dma_cnt = 0x%x\n", g_ApDataCnt, DMA_COUNT);
	
	INTC_Disable(NUM_MSM);
}


void Test_MODEM_TX(void)
{
	u32 length;
	u32	*txdata;

	printf("MODEM TX TEST!!!\n\n");
	
	g_DmaDone = 0;

	txdata = (u32 *)(MSM_TX_BUFFER);
	
	MODEMIF_MODEM_Init(true, true);

	for(length=0 ; length <= DMA_COUNT*MODEM_TX_BUFLEN ; length++)
	{
		*(txdata+length) = length;
	}

	// DMA Init & Setup
     	DMAC_InitCh(DMA0, DMA_ALL, &oModemif0);
	INTC_SetVectAddr(NUM_DMA0,  Dma0Done_MSM);
	INTC_Enable(NUM_DMA0);
	DMACH_Setup(DMA_A, 0x0, MSM_TX_BUFFER, 0, MSM_TX_Queue, 0, WORD, 0x400, DEMAND, MEM, MEM, BURST4, &oModemif0);

        // DMA start
        printf("[ MODEM DMA START!!!]\n");	
	DMACH_Start(&oModemif0);

	// Wait Tx
	while(g_DmaDone < DMA_COUNT);

	INTC_Disable(NUM_DMA0);
	
	// to AP message "STOP"
	Outp16(DPSRAM_BASE_MODEM+INT2AP_ADR, 0x1100);

}

void Test_MODEM_RX(void)
{
	g_MsmDataCnt = 0;
	
	MODEMIF_MODEM_Init(true, true);

	//while(!Getc());

	while(!(g_MsmDataCnt == BLK_COUNT));
	printf("cnt = 0x%x, dma_cnt = 0x%x\n", g_MsmDataCnt, BLK_COUNT);
	
	INTC_Disable(NUM_EINT1);
}

extern NAND_oInform NAND_Inform[NAND_CONNUM];

void Test_AP_Booting(void)
{
	// MODEM I/F GPIO Setting
	MODEMIF_SetPort();

	// MODEM bootloader copy to DPSRAM
	NAND_Inform[0].uNandType = NAND_Normal8bit;
	NAND_Inform[0].uAddrCycle = 4;
	NAND_Inform[0].uBlockNum = 4096;
	NAND_Inform[0].uPageNum = 32;
	NAND_Inform[0].uPageSize = NAND_PAGE_512;
	NAND_Inform[0].uSpareSize = NAND_SPARE_16;
	NAND_Inform[0].uECCtest = 0;
	NAND_Inform[0].uTacls = 0;
	NAND_Inform[0].uTwrph0 = 35+10;	//Pad delay : about 10ns
	NAND_Inform[0].uTwrph1 = 15+5;	//tWH : 15ns
	
	NAND_Init(0);
	NAND_ReadMultiPage(0, 10, 0, (u8 *)0x74100000, 0x1000);
	Delay(100);

	// AP Booting MODEM Reset
	MODEMIF_MODEM_Reset();

}

void Test_SleepWakeup(void)
{
	Outp16(DPSRAM_BASE_MODEM+INT2AP_ADR, 0xff00);
	Outp32(SLEEP_WAKEUP, 0xffff);
}

void Test_WakeupClear(void)
{
	Outp32(SLEEP_WAKEUP_CLEAR, 0xffff);
}

void Test_MODEM_Performance(void)
{

	u32 length, temp;
	u32	*txdata;

	//Message
	printf("MODEM I/F Performance Test!!!\n");

	g_DmaDone = 0;
	
	txdata = (u32 *)(MSM_TX_BUFFER);

	// Modem i/f setting
	MODEMIF_MODEM_Init(true, true);

	// MODEM TX Buffer data
	for(length=0 ; length <= DMA_COUNT*MODEM_TX_BUFLEN ; length++)
		*(txdata+length) = length;
	
     	DMAC_InitCh(DMA0, DMA_ALL, &oModemif0);
	INTC_SetVectAddr(NUM_DMA0,  Dma0Done_MSM);
	INTC_Enable(NUM_DMA0);

        // DMA Channel Set-up
	DMACH_Setup(DMA_A, 0x0, MSM_TX_BUFFER, 0, MSM_TX_Queue, 0, WORD, 0x400, DEMAND, 
	                       MEM, MEM, BURST4, &oModemif0);

	StartTimer(0);

	Outp16(DPSRAM_BASE_MODEM+INT2AP_ADR, 0xff00);

        // Enable DMA
	DMACH_Start(&oModemif0);

	while(g_DmaDone < DMA_COUNT);

	INTC_Disable(NUM_DMA0);
	
	Outp16(DPSRAM_BASE_MODEM+INT2AP_ADR, 0x1100);

	temp = StopTimer(0);
	printf("%dKB R/W Time = %dus\n",(4*DMA_COUNT), temp);

	INTC_Disable(NUM_EINT1);

}


void Test_Display_MEM(void)
{
	u32 i, length, add, size;

	printf("\nMEM DUMP Address : ");
	add = GetIntNum();
	printf("add = 0x%x\n", add);

	printf("\nMEM DUMP Size : ");
	size = GetIntNum();
	printf("size = 0x%x\n", size);

	printf("Press any key and DPSRAM R/W test start!!!\n");
	Getc();
	
		for (length = 0 ; length <= size ; length+=4)
		{
				i = Inp32(add + length);
				printf("%08x    ", i);
		}

	printf("\nDPSRAM Test........OK!!!\n");

}

void Test_DPSRAM(void)
{
	// ALL DPSRAM TEST
	u32 i, length;

	printf("Press any key and DPSRAM R/W test start!!!\n");
	Getc();
	
	for(i=0; i<=0xffffffff; i++)
	{
		for (length = 0 ; length <= 0x1ffc ; length+=4)
		{
			*(unsigned int *)(DPSRAM_BASE + length) = i;

			if(*(unsigned int *)(DPSRAM_BASE + length) != i)
				printf("Error: %08x\n", DPSRAM_BASE + length);
		}
			printf("%08x ", i);
	}	

	printf("DPSRAM Test........OK!!!\n");

}



//////////////////////////////////////////////////////////////////////////////
void MODEM_Test(void)
{
	int i=0, nSel;

	const testFuncMenu modemif_function[]=
	{
		0,                          			"Exit",	
		Test_AP_TX,					"Test AP TX	",
		Test_AP_RX,					"Test AP RX	",

		Test_MODEM_TX,				"Test MODEM TX	",
		Test_MODEM_RX,				"Test MODEM RX    ",

		Test_AP_Booting,			"Test AP Booting		",
		Test_SleepWakeup,			"Test Wake-Up Sleep Mode		",
		Test_WakeupClear, 			"Test Wake-Up Sleep Mode Clear		",

		Test_MODEM_Performance,	"Test MODEM I/F Performance	",

		Test_Display_MEM,			"Dump Memory	",
		Test_DPSRAM,				"Test DPSRAM (AP side)	",
		0,							0
	};
	
	while (1)
	{
		printf("\n");
		for (i=0; (int)(modemif_function[i].desc)!=0; i++)
		{
			printf("%2d: %s\n", i,modemif_function[i].desc);
		}

		printf("==========================================================\n");			
		printf("\nSelect the function to test : ");

		nSel = GetIntNum();

		printf("\n");

		if (nSel == 0)
			break;
		if (nSel>0 && nSel<(sizeof(modemif_function)/8-1))
			 (modemif_function[nSel].func)();
	}		
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线不卡一区| 91麻豆自制传媒国产之光| 激情综合网av| 成人国产精品免费观看| 欧洲精品在线观看| 欧美一区二区三区男人的天堂| 欧美xxxx在线观看| 亚洲精品在线电影| 国产精品久久久久三级| 亚洲一区二区三区免费视频| 午夜精品福利一区二区蜜股av| 亚洲午夜久久久久中文字幕久| 视频一区免费在线观看| 亚洲一区二区三区四区在线 | 国内欧美视频一区二区| 中文字幕在线观看一区二区| 久久精品久久久精品美女| 91在线码无精品| 欧美情侣在线播放| 一区二区激情视频| 日韩女优电影在线观看| 视频一区视频二区在线观看| 成人激情动漫在线观看| 99精品视频一区二区三区| 大桥未久av一区二区三区中文| 国产自产v一区二区三区c| 美女视频一区二区| 国产一区日韩二区欧美三区| 成人av在线播放网址| gogo大胆日本视频一区| 欧美r级电影在线观看| 亚洲午夜一区二区| 欧美精选午夜久久久乱码6080| 久久精品国产色蜜蜜麻豆| 亚洲精品一区二区三区蜜桃下载| 国产在线视频不卡二| 亚洲欧美偷拍卡通变态| 国产欧美日产一区| 精品电影一区二区三区 | 亚洲欧洲日韩女同| 精品在线你懂的| 欧美欧美午夜aⅴ在线观看| 国产精品二区一区二区aⅴ污介绍| 麻豆精品国产传媒mv男同| 91福利在线观看| 国产精品久久毛片av大全日韩| 久久99精品国产麻豆婷婷| 欧美aⅴ一区二区三区视频| 日韩精品一区二区三区中文不卡 | 一区二区三区在线视频播放| 国产成人午夜片在线观看高清观看| 91首页免费视频| 欧美日韩三级视频| 一区二区三区国产精品| 国产成人免费av在线| 亚洲自拍另类综合| 色综合欧美在线视频区| 亚洲一卡二卡三卡四卡五卡| 欧美理论在线播放| 欧美自拍丝袜亚洲| 欧美日韩一区国产| 亚洲色欲色欲www在线观看| 国产成人av电影在线| 日韩欧美区一区二| 蜜桃av一区二区三区电影| 欧美精品乱人伦久久久久久| 亚洲国产精品一区二区www | 欧美视频一区二区三区四区 | 99国产精品99久久久久久| 国产三级三级三级精品8ⅰ区| 奇米四色…亚洲| 日韩一区二区电影| 中文字幕制服丝袜一区二区三区| 欧美性videosxxxxx| 亚洲视频 欧洲视频| 久久这里只有精品视频网| 欧美日韩三级一区二区| 国产精品乱码一区二区三区软件 | 日韩视频一区二区三区| 7777精品伊人久久久大香线蕉完整版| av一区二区三区在线| 亚洲精品国产第一综合99久久| 久久久无码精品亚洲日韩按摩| 精品久久免费看| 久久久精品tv| 亚洲视频综合在线| 亚洲高清视频在线| 欧美一区二区三区四区久久| 成人毛片老司机大片| 国产一区二区不卡在线| 日韩av一区二区三区| 免费人成黄页网站在线一区二区| 日本一二三不卡| 国产成人aaa| 亚洲va国产天堂va久久en| 亚洲精品一区二区三区四区高清 | 欧美日韩在线不卡| 国产成人综合网| 久久精品国产在热久久| 亚洲女女做受ⅹxx高潮| 亚洲视频在线一区| 亚洲欧美日韩中文播放| 亚洲欧美国产高清| 亚洲成人福利片| 日韩成人免费在线| 国模套图日韩精品一区二区| 九九**精品视频免费播放| 国产高清亚洲一区| 成人a级免费电影| 在线观看免费一区| 91精品国产色综合久久不卡蜜臀| 欧美一级欧美三级| 国产色爱av资源综合区| 亚洲精品大片www| 精品无人区卡一卡二卡三乱码免费卡| 精品午夜久久福利影院| 成人美女在线观看| 欧美日韩一区二区欧美激情| 精品欧美久久久| 一区二区三区四区乱视频| 免费观看一级欧美片| 日本不卡123| 久久成人羞羞网站| 久久成人久久爱| 日韩国产欧美在线播放| 日韩二区在线观看| 亚洲少妇屁股交4| 亚洲一二三区在线观看| 奇米影视在线99精品| 福利一区二区在线| 日韩欧美电影在线| 久久久久久久久99精品| 欧美年轻男男videosbes| 欧美日韩视频第一区| 欧美系列亚洲系列| 欧美一区二区视频在线观看2020 | 亚洲乱码国产乱码精品精可以看| 亚洲欧美日韩中文播放| 国产综合色视频| 欧美一区二区在线免费播放 | 精品久久久久久亚洲综合网| 久久精品一区二区三区四区| 一区二区在线观看视频在线观看| 国产电影精品久久禁18| 日韩美女视频在线| 日韩高清不卡在线| 91久久精品一区二区| 国产精品萝li| 国产成人av一区二区三区在线 | 欧美色手机在线观看| 亚洲男人的天堂av| 99精品桃花视频在线观看| 欧美国产一区视频在线观看| 激情综合一区二区三区| 日韩欧美一级二级三级| 日本伊人色综合网| 欧美一区二区三区四区五区 | 91麻豆国产自产在线观看| 国产亲近乱来精品视频| 国产a级毛片一区| ●精品国产综合乱码久久久久| 成人h精品动漫一区二区三区| 国产欧美一区二区精品婷婷| 丰满少妇在线播放bd日韩电影| 国产日韩欧美综合在线| 国产成人啪午夜精品网站男同| 欧美zozozo| av高清不卡在线| 亚洲国产视频网站| 精品久久一二三区| 99久久久精品| 亚洲成国产人片在线观看| 欧美一级淫片007| 成人免费黄色大片| 亚洲国产日韩一级| 久久精品视频免费| 欧美色老头old∨ideo| 伦理电影国产精品| 中文字幕免费不卡| 精品视频色一区| 成人黄页在线观看| 国产亚洲精品中文字幕| 精品一区二区三区欧美| 亚洲丝袜美腿综合| 精品久久久久久无| 欧洲另类一二三四区| 精品影视av免费| 亚洲成人你懂的| 中文字幕av一区二区三区高| 欧美日韩的一区二区| 成人网男人的天堂| 精品亚洲国内自在自线福利| 亚洲理论在线观看| 中文在线一区二区| 337p日本欧洲亚洲大胆精品| 欧美日韩精品综合在线| 91精彩视频在线观看| 成人在线视频一区| 国产成人免费视频网站| 国产一区二区福利|