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

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

?? modemif_test.c

?? s3c6400 ADS下官方測試程序
?? 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电影在线观看一区| 亚洲一区二区视频在线观看| 在线综合视频播放| 国产寡妇亲子伦一区二区| 国产精品乱码一区二区三区软件| 色天天综合色天天久久| 日韩成人免费看| 国产亚洲一区二区三区四区| 色综合天天天天做夜夜夜夜做| 一区二区三区国产精华| 精品剧情在线观看| 99re成人在线| 精品一区二区三区免费播放| 成人欧美一区二区三区小说| 制服丝袜亚洲播放| 东方欧美亚洲色图在线| 亚洲二区在线视频| 久久精品一区八戒影视| 在线视频观看一区| 国产福利一区二区三区视频| 夜夜嗨av一区二区三区网页| 精品日本一线二线三线不卡| 一本一道综合狠狠老| 日韩精品1区2区3区| 国产精品国产a级| 日韩你懂的在线播放| 色婷婷综合久久久久中文 | 亚洲va欧美va人人爽| 久久综合九色欧美综合狠狠 | 欧美视频在线一区| 成人一级视频在线观看| 日本午夜一本久久久综合| **欧美大码日韩| 久久久青草青青国产亚洲免观| 精品视频在线看| 99久久精品免费精品国产| 伦理电影国产精品| 日韩中文字幕不卡| 亚洲美女精品一区| 国产精品午夜免费| 久久久高清一区二区三区| 这里只有精品视频在线观看| 色又黄又爽网站www久久| 国产成人亚洲综合a∨婷婷| 麻豆国产91在线播放| 亚洲精品一二三| 亚洲欧美中日韩| 国产精品久久久久桃色tv| 欧美刺激脚交jootjob| 欧美精品1区2区3区| 在线观看不卡一区| 91国偷自产一区二区开放时间 | 欧美高清性hdvideosex| 91麻豆国产香蕉久久精品| 国产91丝袜在线播放九色| 国内精品嫩模私拍在线| 久久精品国产亚洲高清剧情介绍| 三级欧美在线一区| 日韩精品免费专区| 婷婷六月综合网| 日本成人中文字幕| 日韩在线一二三区| 日韩精品乱码免费| 青青国产91久久久久久| 美女一区二区久久| 日韩不卡一区二区| 蜜臀久久久99精品久久久久久| 婷婷成人激情在线网| 日韩成人一级片| 久久成人羞羞网站| 国产精品亚洲一区二区三区在线| 国产制服丝袜一区| 国产高清无密码一区二区三区| 国产精品69毛片高清亚洲| 国产成人精品aa毛片| 不卡视频一二三| 色婷婷激情一区二区三区| 欧美日韩一区二区三区视频| 4438x成人网最大色成网站| 日韩欧美国产综合一区| 久久久精品tv| **网站欧美大片在线观看| 亚洲成人自拍偷拍| 麻豆国产91在线播放| 成人精品国产一区二区4080| 91久久精品午夜一区二区| 欧美日韩不卡一区| 久久综合色播五月| 亚洲人成7777| 青娱乐精品视频在线| 高清beeg欧美| 欧美午夜精品久久久久久超碰| 3d动漫精品啪啪1区2区免费| 久久综合给合久久狠狠狠97色69| 国产精品人妖ts系列视频| 亚洲精品你懂的| 久久精品国产一区二区| 99这里只有久久精品视频| 欧美日韩国产美女| 欧美成人a在线| 中文字幕亚洲区| 日本aⅴ亚洲精品中文乱码| 国产成人免费网站| 欧美视频日韩视频| 国产拍欧美日韩视频二区| 亚洲午夜久久久久中文字幕久| 精品一区二区三区免费观看| 99久久99精品久久久久久 | 丁香婷婷综合色啪| 欧美色区777第一页| 国产亚洲一区字幕| 亚州成人在线电影| 成人avav影音| 亚洲精品一区二区三区蜜桃下载 | 一级女性全黄久久生活片免费| 久久精品久久久精品美女| 91国在线观看| 欧美高清在线一区二区| 日韩有码一区二区三区| 99久久久国产精品| 久久久久国产精品人| 手机精品视频在线观看| 99久久99久久精品国产片果冻| 欧美成人精品二区三区99精品| 亚洲制服丝袜av| 99国产精品视频免费观看| 久久久久成人黄色影片| 日本成人超碰在线观看| 91网站视频在线观看| 国产色一区二区| 精品一区二区三区免费观看| 欧美日韩国产三级| 一级精品视频在线观看宜春院 | 一本一道久久a久久精品综合蜜臀| 精品国产三级电影在线观看| 视频一区欧美精品| 欧洲精品一区二区| 亚洲女与黑人做爰| 成人福利视频在线看| 国产拍欧美日韩视频二区| 国产精品一区二区久久精品爱涩| 欧美一区二区大片| 亚洲1区2区3区4区| 欧美日韩国产天堂| 日韩成人精品视频| 欧美精品1区2区3区| 亚洲18影院在线观看| 欧美日韩mp4| 日韩和欧美一区二区| 欧美日韩国产色站一区二区三区| 亚洲最大成人网4388xx| 在线欧美日韩国产| 亚洲午夜精品在线| 欧美日韩久久不卡| 奇米影视7777精品一区二区| 91超碰这里只有精品国产| 日韩电影免费在线看| 日韩欧美一区二区三区在线| 毛片av一区二区三区| 久久综合资源网| 国产一区二区在线看| 国产欧美日韩一区二区三区在线观看| 国产成人在线视频播放| 日本一二三不卡| 91网站视频在线观看| 亚洲国产综合在线| 欧美疯狂做受xxxx富婆| 美女视频黄频大全不卡视频在线播放| 欧美mv日韩mv国产网站| 国产自产2019最新不卡| 国产精品毛片高清在线完整版| 99久久精品国产观看| 一区二区三区精品视频| 制服丝袜中文字幕亚洲| 国产美女视频91| 亚洲欧洲精品一区二区精品久久久| 91丨porny丨中文| 日韩精品乱码av一区二区| 2020国产精品自拍| 一本久道中文字幕精品亚洲嫩| 亚洲成人激情自拍| 精品国产伦一区二区三区免费 | 久久夜色精品一区| av亚洲精华国产精华精| 亚洲国产精品一区二区久久恐怖片 | 日韩美女一区二区三区四区| 国产精品911| 亚洲精品国久久99热| 91精品国产免费|