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

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

?? misc-watchdog-1.c

?? 本程序是在arm9200平臺上實現看門狗的驅動程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include <linux/config.h>
#include <linux/module.h>

#include <linux/init.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
#include <linux/sched.h>
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/string.h>
#include <linux/pm.h>
#include <linux/miscdevice.h>
#include <linux/poll.h>

#include <asm/dma.h>
#include <asm/semaphore.h>
#include <asm/uaccess.h>
#include <asm/hardware.h>

#include <asm/io.h>
#include <asm/system.h>


#define WATCHDOG_MINOR 131   //misc次設備號

#define WDIOC_GETSTATUS 1
#define WDIOC_GETBOOTSTATUS 2
#define WDIOC_KEEPALIVE 3
#define WDIOC_SETTIMEOUT 4
#define WDIOC_GETTIMEOUT 5

//------------------------------
//define of rtc
#define WDIOC_READ_DATE 10
#define WDIOC_READ_TIME 11
#define WDIOC_WRITE_DATE 12
#define WDIOC_WRITE_TIME 13

//----------------------------------------------
//define of led
//----------------------------------------------
#define USER_LED1	AT91C_PIO_PA24

//-----------------------------------------------
//define of Fram
//-----------------------------------------------
#define FM_SCK AT91C_PIO_PC0
#define FM_SI  AT91C_PIO_PC2
#define FM_SO  AT91C_PIO_PC1


#define TOUCH_CS1  AT91C_PIO_PD5
#define TOUCH_CS2  AT91C_PIO_PD8
#define FM_CS1     AT91C_PIO_PD9
#define FM_CS2     AT91C_PIO_PD10

//------------------------------------------------
//define of rtc
//-------------------------------------------------
#define MY_RTC_CS AT91C_PIO_PB29
#define MY_RTC_SCK AT91C_PIO_PB27
#define MY_RTC_IO AT91C_PIO_PB28

static int timeout=3;
static int timer_alive=0;
//static int testmode;

#define TIMER_MARGIN 60  /* (secs) Default is 1 minute */
static int soft_margin = TIMER_MARGIN; /* in seconds */

static char aaa=0x00;

struct my_date
	{
	unsigned char year;
	unsigned char month;
	unsigned char day;
	};

struct my_time
	{
	unsigned char hour;
	unsigned char min;
	unsigned char sec;
	};

struct my_data_of_fram
	{
	unsigned char flag_of_which_fram;
	unsigned char flag_of_command;
	unsigned char add1;
	unsigned char add2;
	unsigned char len;
	unsigned char data_buffer[100];
	};
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
//------------------------functions of rtc
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------

//--------------------------------------------------------------
//-------set time
//--------------------------------------------------------------
static struct my_time my_read_time(void)
{
		int i;
		unsigned char bit;
		unsigned char cmd=0x05;
		unsigned char read_data=0;
		struct my_time mm;

//-----------------------------------------------
//read second
//-----------------------------------------------		
		AT91_SYS->PIOB_OER|=MY_RTC_IO;
 		cmd=0x81;//second register
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		AT91_SYS->PIOB_ODR|=MY_RTC_IO;

		udelay(10);
		for( i=0;i<=7;i++ )
				{
				read_data=read_data>>1;
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(5);

				if( (AT91_SYS->PIOB_PDSR&MY_RTC_IO)!=0 )
						read_data|=0x80;
				else
						read_data&=0x7f;

				udelay(5);

				AT91_SYS->PIOB_CODR=MY_RTC_SCK;

				udelay(10);
				}

		mm.sec=read_data;
//printk("read data=%d",read_data );

		udelay(20);
		AT91_SYS->PIOB_CODR=MY_RTC_CS;
		udelay(20);
//-----------------------------------------------
//read hour
//-----------------------------------------------		
		AT91_SYS->PIOB_OER|=MY_RTC_IO;
 		cmd=0x85;//year register
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		AT91_SYS->PIOB_ODR|=MY_RTC_IO;

		udelay(10);
		for( i=0;i<=7;i++ )
				{
				read_data=read_data>>1;
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(5);

				if( (AT91_SYS->PIOB_PDSR&MY_RTC_IO)!=0 )				
						read_data|=0x80;
				else
						read_data&=0x7f;

				udelay(5);
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;

				
				udelay(10);
				}
				
		mm.hour=read_data;
//printk("read data=%d",read_data );

		udelay(20);
		AT91_SYS->PIOB_CODR=MY_RTC_CS;
		udelay(20);

//-----------------------------------------------
//read min
//-----------------------------------------------		
		AT91_SYS->PIOB_OER|=MY_RTC_IO;
 		cmd=0x83;//year register
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		AT91_SYS->PIOB_ODR|=MY_RTC_IO;

		udelay(10);
		for( i=0;i<=7;i++ )
				{
				read_data=read_data>>1;
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(5);

				if( (AT91_SYS->PIOB_PDSR&MY_RTC_IO)!=0 )				
						read_data|=0x80;
				else
						read_data&=0x7f;

				udelay(5);
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;

				
				udelay(10);
				}
				
 	mm.min=read_data;
//printk("read data=%d",read_data );

		udelay(20);
		AT91_SYS->PIOB_CODR=MY_RTC_CS;
		udelay(20);
		
		return( mm );
}

//----------------------------------------------------------------
//-------------read date
//----------------------------------------------------------------
static struct my_date my_read_date(void)
{
		int i;
		unsigned char bit;
		unsigned char cmd=0x05;
		unsigned char read_data=0;
		struct my_date mm;

//-----------------------------------------------
//read year
//-----------------------------------------------		
		AT91_SYS->PIOB_OER|=MY_RTC_IO;
 		cmd=0x8d;//year register
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		AT91_SYS->PIOB_ODR|=MY_RTC_IO;

		udelay(10);
		for( i=0;i<=7;i++ )
				{
				read_data=read_data>>1;
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(5);

				if( (AT91_SYS->PIOB_PDSR&MY_RTC_IO)!=0 )				
						read_data|=0x80;
				else
						read_data&=0x7f;

				udelay(5);
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;

				
				udelay(10);
				}
				
		mm.year=read_data;
//printk("read data=%d",read_data );

		udelay(20);
		AT91_SYS->PIOB_CODR=MY_RTC_CS;
		udelay(20);


//-----------------------------------------------
//read month
//-----------------------------------------------		
		AT91_SYS->PIOB_OER|=MY_RTC_IO;
 		cmd=0x89;//year register
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		AT91_SYS->PIOB_ODR|=MY_RTC_IO;

		udelay(10);
		for( i=0;i<=7;i++ )
				{
				read_data=read_data>>1;
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(5);

				if( (AT91_SYS->PIOB_PDSR&MY_RTC_IO)!=0 )				
						read_data|=0x80;
				else
						read_data&=0x7f;

				udelay(5);
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;

				
				udelay(10);
				}
				
		mm.month=read_data;
//printk("read data=%d",read_data );

		udelay(20);
		AT91_SYS->PIOB_CODR=MY_RTC_CS;
		udelay(20);

//-----------------------------------------------
//read day
//-----------------------------------------------		
		AT91_SYS->PIOB_OER|=MY_RTC_IO;
 		cmd=0x87;//year register
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		AT91_SYS->PIOB_ODR|=MY_RTC_IO;

		udelay(10);
		for( i=0;i<=7;i++ )
				{
				read_data=read_data>>1;
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(5);

				if( (AT91_SYS->PIOB_PDSR&MY_RTC_IO)!=0 )				
						read_data|=0x80;
				else
						read_data&=0x7f;

				udelay(5);
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;

				
				udelay(10);
				}
				
		mm.day=read_data;
//printk("read data=%d",read_data );

		udelay(20);
		AT91_SYS->PIOB_CODR=MY_RTC_CS;
		udelay(20);
		
		return( mm );
}

//----------------------------------------------------------------------------
//-----------set date
//----------------------------------------------------------------------------
static void write_rtc_date( struct my_date my_date_set )
{
		int i;
		unsigned char bit;
		unsigned char cmd=0x05;
		unsigned char read_data=0;

//		struct my_date m;

//--------------------------------------------------------------------
//write write protect reg
//---------------------------------------------------------------------
		AT91_SYS->PIOB_OER|=MY_RTC_IO;///set RTC_IO output
		cmd=0x8e;//write protect reg
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		cmd=0x00;//=0x00 register can write ,=0x80 register can not write
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);
		AT91_SYS->PIOB_CODR=MY_RTC_CS;
		udelay(20);
//------------------------------------------
//write second to enable osc
//------------------------------------------
		AT91_SYS->PIOB_OER|=MY_RTC_IO;
		cmd=0x80;//second reg
		AT91_SYS->PIOB_SODR=MY_RTC_CS;
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low
				AT91_SYS->PIOB_CODR=MY_RTC_SCK;
				udelay(5);
				}

		udelay(20);

		cmd=0x00;//=0x00 osc is enable =0x80 osc is disable
		udelay(10);
		for( i=0;i<=7;i++ )
				{
				//CMD Output
				bit=( cmd>>i )&0x01;
				if( bit )
						AT91_SYS->PIOB_SODR=MY_RTC_IO;
	      else
						AT91_SYS->PIOB_CODR=MY_RTC_IO;
				udelay(5);

				//CLK High
				AT91_SYS->PIOB_SODR=MY_RTC_SCK;
				udelay(10);
				//CLK Low

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品在线观看播放| 欧美一区二区三区精品| 欧美va亚洲va在线观看蝴蝶网| 蜜桃视频第一区免费观看| 亚洲小说春色综合另类电影| 亚洲欧美一区二区三区极速播放| 久久你懂得1024| 26uuu国产一区二区三区 | 成人av在线影院| 国产精品沙发午睡系列990531| 久久亚洲一级片| 中文字幕一区二区5566日韩| 99热99精品| 亚洲高清不卡在线| 国产成人av一区| 97aⅴ精品视频一二三区| 日本一区二区三区免费乱视频 | 国产精品亚洲午夜一区二区三区| 亚洲国产精品一区二区久久| 亚洲二区在线视频| 国产成人免费9x9x人网站视频| 激情五月激情综合网| 欧美日韩在线播放三区四区| 精品国产一区二区三区忘忧草| 成人精品视频一区二区三区| 不卡av在线免费观看| 99re这里只有精品6| 欧美视频一区二区三区| 欧美狂野另类xxxxoooo| 日韩女优视频免费观看| 久久婷婷成人综合色| 国产精品久久久久久久久久久免费看| 1区2区3区精品视频| 亚洲精品视频免费看| 日本中文一区二区三区| 国内精品在线播放| 一本一道久久a久久精品综合蜜臀| 91久久免费观看| 日韩一区二区在线观看| 久久精品亚洲一区二区三区浴池| **欧美大码日韩| 日本午夜一本久久久综合| 国产福利不卡视频| 欧美日韩色综合| 亚洲国产精品99久久久久久久久| 亚洲欧洲美洲综合色网| 日本亚洲电影天堂| 99国产一区二区三精品乱码| 欧美一级淫片007| 亚洲欧洲国产日韩| 精品一区二区三区av| 99精品热视频| 久久久五月婷婷| 亚洲国产欧美在线| 成人激情校园春色| 精品精品欲导航| 一区二区三区精品在线| 懂色中文一区二区在线播放| 777亚洲妇女| 一区二区三区在线观看国产| 国产精品一区二区91| 欧美精品一二三四| 悠悠色在线精品| 成人美女视频在线观看18| 欧美成人video| 偷窥少妇高潮呻吟av久久免费| gogo大胆日本视频一区| 国产女人18毛片水真多成人如厕 | 欧美在线一二三四区| 欧美精彩视频一区二区三区| 蜜乳av一区二区| 欧美电影一区二区三区| 亚洲一区影音先锋| 91农村精品一区二区在线| 国产精品五月天| 国产成人av网站| 欧美国产乱子伦| 粉嫩蜜臀av国产精品网站| 久久久久久影视| 精品一区精品二区高清| 欧美成人伊人久久综合网| 久久激情五月婷婷| 欧美变态tickle挠乳网站| 久久99精品久久久久久| 欧美电影免费观看高清完整版在线观看| 丝袜美腿高跟呻吟高潮一区| 欧美日本一区二区在线观看| 天天综合日日夜夜精品| 欧美一级黄色片| 久久国产综合精品| 久久这里都是精品| 成人黄色片在线观看| 亚洲视频1区2区| 欧美色综合网站| 美女免费视频一区二区| 精品噜噜噜噜久久久久久久久试看 | 一区二区三区日韩欧美精品| 欧美综合一区二区| 天天综合网天天综合色| 久久综合色综合88| 波多野结衣中文字幕一区二区三区 | 欧美熟乱第一页| 天涯成人国产亚洲精品一区av| 欧美精品九九99久久| 精品一区二区三区在线播放视频| 国产亚洲成aⅴ人片在线观看 | 色综合久久综合网| 亚洲成人免费影院| 日韩欧美色综合网站| 国产在线一区观看| 亚洲天堂成人网| 日韩午夜电影在线观看| 风间由美一区二区av101| 亚洲黄色在线视频| 欧美www视频| 91麻豆福利精品推荐| 免费看欧美美女黄的网站| 中文字幕在线观看一区| 91精品国产综合久久久久久久| 国产毛片一区二区| 亚洲国产cao| 自拍偷拍欧美激情| 欧美成人欧美edvon| 色噜噜夜夜夜综合网| 国产精品一区二区三区99 | 精品三级av在线| 91视频一区二区三区| 狠狠色丁香婷婷综合| 亚洲一区二区偷拍精品| 中文av一区二区| 日韩欧美国产三级电影视频| 欧美在线制服丝袜| 成人动漫精品一区二区| 久久99久久精品| 亚洲a一区二区| 一区二区三区不卡视频| 国产精品免费视频观看| 久久免费国产精品| 欧美日韩成人在线一区| 一本久久a久久精品亚洲| 精品一区二区免费在线观看| 亚洲男人的天堂av| 国产精品不卡在线观看| 日韩免费电影一区| 色综合久久久久综合体| 国产精品99久| 秋霞成人午夜伦在线观看| 亚洲欧美日韩一区二区| 制服丝袜一区二区三区| 欧美精品日日鲁夜夜添| 97久久精品人人做人人爽50路| 秋霞国产午夜精品免费视频| 亚洲同性同志一二三专区| 欧美国产乱子伦| 亚洲精品一区二区在线观看| 欧美吻胸吃奶大尺度电影 | 青草国产精品久久久久久| 免费看黄色91| 亚洲永久免费av| 亚洲欧美中日韩| 国产网站一区二区三区| 国产精品热久久久久夜色精品三区| 欧美日韩国产免费一区二区| 99久久精品99国产精品 | 日韩免费看网站| 日韩欧美中文一区二区| 欧美人体做爰大胆视频| 色素色在线综合| 色婷婷精品大在线视频| 在线观看91视频| 欧美系列在线观看| 欧美最新大片在线看| 国产自产视频一区二区三区| 国内精品免费在线观看| 精品亚洲国产成人av制服丝袜 | 亚洲不卡一区二区三区| 亚洲高清免费观看| 精品一区中文字幕| 国产麻豆日韩欧美久久| 国产黄人亚洲片| 国产一区二区三区综合 | 亚洲丝袜另类动漫二区| 中文字幕一区视频| 亚洲免费观看高清完整版在线观看| 亚洲国产另类精品专区| 天天操天天综合网| 老司机一区二区| 韩国三级在线一区| 色综合久久天天| 在线成人免费观看| 精品福利视频一区二区三区| 欧美电影免费提供在线观看| 久久天堂av综合合色蜜桃网| 欧美激情在线看| 亚洲婷婷综合久久一本伊一区 | 亚洲私人影院在线观看| 日韩av不卡在线观看| 国产一区二区三区综合| 国产成人啪免费观看软件| 97精品视频在线观看自产线路二|