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

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

?? ads7843_mydriver.c

?? xscale pxa255 處理器
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************
** File name :  ads7843_mydriver.c
**     
** Description :
**     ADS7843(Touch Screen Controller)
**      
** Compile environment and method of compile & link
**      gcc version 2.95.2 20000313 (Debian GNU/Linux)
**
** Usage :
**      Touch screen controller Device Driver for X-Hyper255 Board 
**  
**
** Modification history :
**      Date        Version  Programmer & Tester   
**      2008.1.17    0.1      Brian Liu             
**
*******************************************************************************/

#include <linux/config.h>
#include <linux/types.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/delay.h>
#include <linux/fs.h>
#include <linux/poll.h>
#include <linux/string.h>

#include <linux/devfs_fs_kernel.h>

#include <asm/uaccess.h>
#include <asm/hardware.h>
#include <asm/irq.h>

#include "ads7843_ts.h"



#define PRINTK printk
#define DELAY 30

static int head, tail;
static TS_EVENT cur_data, samples[3], buf[BUFSIZE];
static struct fasync_struct *fasync;
static unsigned long in_timehandle = 0;
unsigned int count =0;
static void ts_clear(void);
static void print_par(void);

static void read_xy(void);

/******************************************************************************/
#define PORT0       (*(volatile unsigned short *)(0xf011 0000))  //nCS2(0x0800 0000))
#define PORT0_temp  (*(volatile unsigned short *)(0xa060 5010))

//對ADS7843-DCLK -CS -DIN系統(tǒng)數(shù)據(jù)線進(jìn)行位設(shè)置
void SetBit(char bits)
{
	char value=0;
	value = bits;
	PORT0_temp |= value;
	PORT0 = PORT0_temp;
}

void ClearBit(char bits)
{
	char value=0;
	value = ~(bits);
	PORT0_temp &= value;
	PORT0 = PORT0_temp;
}

/*******************************************************************************/	
//PXA255通過ADS7843-DIN數(shù)據(jù)線(Q6)寫控制字(SPIMDATA_ASKX和
//SPIMDATA_ASKY和SPIMDATA_NOP)給觸摸屏
void ads7843_din(char command)
{
        int i;

		ClearBit(ADS7843_CS);
        udelay(DELAY);

        for(i = 0; i < 8; i++)
        {
		        ClearBit( ADS7843_CLK);        
                if((command >> i)&0x1)
                	{
		                SetBit(ADS7843_DIN);
				          } 
				        else 
				        	{
		                ClearBit(ADS7843_DIN);
				          }
                udelay(DELAY);
                SetBit(ADS7843_CLK);
        }

}


void ads7843_askx(void)
{
        ads7843_din(SPIMDATA_ASKX);
}

void ads7843_asky(void)
{
        ads7843_din(SPIMDATA_ASKY);
}

void ads7843_nop(void)
{
        ads7843_din(SPIMDATA_NOP);
}

/*
int sa1100_ts_measure_x(void)
{
    char i;
    int touch_data = 0;

	
        ClearBit(ADS7843_CS);

        udelay(DELAY); 

        for(i = 0; i < 8; i++)
        {
                ClearBit(ADS7843_CLK);
                udelay(DELAY);
                if((  SPIMDATA_ASKX >> i) & 0x01){
                        SetBit(ADS7843_DIN);
				} else {
                        ClearBit(ADS7843_DIN);
				}
                udelay(DELAY);
                SetBit(ADS7843_CLK);
        }

        ClearBit(ADS7843_CLK);
        udelay(DELAY);

        while(!(GPLR0 & GPIO_bit(ADS7843_BUSY)))
				printk("BUSY1\n");

        ClearBit(ADS7843_CLK);

        for(i = 0; i < 15; i++)
        {
                touch_data <<= 1;
                if(GPLR0 & GPIO_bit(ADS7843_DOUT))
                	{
                        touch_data |= 0x01;
				          } 
				        else 
				        	{
                        touch_data &= 0xffffe;
				          }
		        SetBit(ADS7843_CLK);
               udelay(DELAY);
		        ClearBit(ADS7843_CLK);
        }
        touch_data >>= 3;
        return (touch_data & 0xfff);

}
*/

/********************************************************************************/
int sa1100_ts_measure_x(void)
{
    char i;
    int touch_data = 0;

	  ads7843_askx(void);
    
        while(!(GPLR0 & GPIO_bit(ADS7843_BUSY)))
				printk("BUSY1\n");
        SetBit(ADS7843_CLK);
        udelay(DELAY);
        ClearBit(ADS7843_CLK);
        udelay(DELAY);
        
        for(i = 0; i < 12; i++)
        {
                
                if(GPLR0 & GPIO_bit(ADS7843_DOUT))//GPIO_bit(4)應(yīng)該是(1<<4)即GPIO4引腳為高電平,不前不知是在哪個文件中定義的
                	{
                        touch_data |= 0x01;
				          } 
				        else 
				        	{
                        touch_data &= ~0x01;
				          }
			      touch_data <<= 1;
		        SetBit(ADS7843_CLK);
               udelay(DELAY);
		        ClearBit(ADS7843_CLK);
		           udelay(DELAY);
        }
        touch_data >>= 1;
        return (touch_data );

}
/******************************************************************************/
/*
int sa1100_ts_measure_y(void)
{
    char i;
    int touch_data = 0;

        XHYPER255_ClearBit(0, ADS7843_CS);

      udelay(DELAY);

        for(i = 0; i < 8; i++)
        {
                XHYPER255_ClearBit(0, ADS7843_CLK);
                udelay(DELAY);
                if((  SPIMDATA_ASKY >> i) & 0x01){
                        XHYPER255_SetBit(0, ADS7843_DIN);
				} else {
                        XHYPER255_ClearBit(0, ADS7843_DIN);
				}
                udelay(DELAY);
                XHYPER255_SetBit(0, ADS7843_CLK);

        }

        XHYPER255_ClearBit(0, ADS7843_CLK);
        udelay(DELAY);

        while(!(GPLR0 & GPIO_bit(ADS7843_BUSY)))
				printk("BUSY2\n");
	
        ClearBit(ADS7843_CLK);

        for(i = 0; i < 15; i++)
        {
                touch_data <<= 1;
                if(GPLR0 & GPIO_bit(ADS7843_DOUT)){
                        touch_data |= 0x01;
				} else {
                        touch_data &= 0xffffe;
				}
                XHYPER255_SetBit(0, ADS7843_CLK);
                udelay(DELAY);
                XHYPER255_ClearBit(0, ADS7843_CLK);

        }
        touch_data >>= 3;
        return (touch_data & 0xfff);

}
*/
/********************************************************************************/
int sa1100_ts_measure_y(void)
{
    char i;
    int touch_data = 0;

	  ads7843_asky(void);
    
        while(!(GPLR0 & GPIO_bit(ADS7843_BUSY)))
				printk("BUSY1\n");
        SetBit(ADS7843_CLK);
        udelay(DELAY);
        ClearBit(ADS7843_CLK);
        udelay(DELAY);
        
        for(i = 0; i < 12; i++)
        {
                
                if(GPLR0 & GPIO_bit(ADS7843_DOUT))
                	{
                        touch_data |= 0x01;
				          } 
				        else 
				        	{
                        touch_data &= ~0x01;
				          }
			      touch_data <<= 1;
		        SetBit(ADS7843_CLK);
               udelay(DELAY);
		        ClearBit(ADS7843_CLK);
		           udelay(DELAY);
        }
        touch_data >>= 1;
        return (touch_data );

}



/******************************************************************************/
void Ads7843_Enable_IRQ(void)  //片選,在這期間可以響應(yīng)中斷
{

	ClearBit(ADS7843_CS);								// CS Low
	udelay(DELAY);
	ads7843_nop(void); //
	udelay(DELAY);
	SetBit(ADS7843_CS);								// CS High - Conversion END

}

static int ads7843_ts_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg)
{
/* Microwindows style (should change to TS_CAL when the specification is ready) */
   switch (cmd)
   {
      case 3:
	 raw_max_x = arg;
	 break;
      case 4:
	 raw_max_y = arg;
	 break;
      case 5:
	 res_x = arg;
	 break;
      case 6:
	 res_y = arg;
	 break;
      case 10:
	 raw_min_x = arg;
	 break;
      case 11:
	 raw_min_y = arg;
	 break;
      case 12:
/* New attribute for portrait modes */
	 xyswap = arg;
/* Allen Add */
      case 13:	       /* 0 = Enable calibration ; 1 = Calibration OK */
	 cal_ok = arg;
      case 14:	       /* Clear all buffer data */
	 ts_clear();
	 break;
      case 15:	       /* X axis reversed setting */
	 x_rev = arg;
	 break;
      case 16:	       /* Y axis reversed setting */
	 y_rev = arg;
	 break;
      case 17:	       /* Clear all buffer data */
	 print_par();
	 break;
/* Allen */
   }

   return 0;
}

//清空緩沖區(qū)
static void ts_clear(void)
{
   int i;

   for (i=0; i < BUFSIZE; i++)
   {
       buf[i].pressure=(short)NULL;
       buf[i].x=(int)NULL;
       buf[i].y=(int)NULL;
       buf[i].millisecs=(int)NULL;
   }

   head = 0;
   tail = 0;

}

static void print_par(void)
{
   printk(" Kernel ==> cal_ok = %d\n",cal_ok);
   printk(" Kernel ==> raw_max_x = %d\n",raw_max_x);
   printk(" Kernel ==> raw_max_y = %d\n",raw_max_y);
   printk(" Kernel ==> res_x = %d\n",res_x);
   printk(" Kernel ==> res_y = %d\n",res_y);
   printk(" Kernel ==> raw_min_x = %d\n",raw_min_x);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产二区国产一区在线观看| 91麻豆精品国产91久久久更新时间| 捆绑调教美女网站视频一区| 午夜伦欧美伦电影理论片| 亚洲妇熟xx妇色黄| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲精品日韩专区silk| 亚洲精品成人悠悠色影视| 亚洲美女屁股眼交| 亚洲成人tv网| 久久99精品久久久久久国产越南 | 亚洲色大成网站www久久九九| 国产精品理论片在线观看| 国产精品欧美久久久久一区二区| 国产精品热久久久久夜色精品三区| 国产精品网站在线| 亚洲人成小说网站色在线 | 成人午夜视频在线观看| 99re这里只有精品视频首页| 99国产精品国产精品毛片| 欧洲一区二区三区在线| 欧美一区二区三区电影| 久久香蕉国产线看观看99| 国产精品久久毛片av大全日韩| 亚洲免费视频成人| 青青草97国产精品免费观看 | 91久久精品一区二区| 欧美精品1区2区3区| 精品国一区二区三区| 久久精品男人天堂av| 亚洲精品国产精品乱码不99| 亚洲动漫第一页| 国产真实乱偷精品视频免| 成人免费看的视频| 欧美色倩网站大全免费| 精品久久一区二区| 中文字幕一区二区日韩精品绯色| 亚洲第一久久影院| 国产精品一二三区在线| 色综合久久中文综合久久牛| 日韩一区国产二区欧美三区| 国产精品五月天| 日韩av二区在线播放| 风间由美性色一区二区三区| 欧美日韩高清在线| 亚洲国产高清不卡| 天天免费综合色| 粉嫩高潮美女一区二区三区| 欧美日韩免费电影| 中文字幕成人在线观看| 偷拍自拍另类欧美| 国产aⅴ综合色| 91精品国模一区二区三区| 国产精品每日更新在线播放网址| 午夜精品一区二区三区免费视频 | 日韩欧美一区在线观看| 亚洲视频香蕉人妖| 国内一区二区在线| 欧美精品黑人性xxxx| 中文字幕制服丝袜成人av | 欧美一区二区三区人| 亚洲欧洲色图综合| 久久成人久久鬼色| 欧美性猛交xxxx乱大交退制版 | 日本欧美一区二区三区| 色综合久久66| 国产日韩精品久久久| 日本不卡免费在线视频| 日本久久电影网| 中文av一区二区| 国产自产2019最新不卡| 91精品综合久久久久久| 亚洲精品乱码久久久久久| 成人丝袜18视频在线观看| 精品国产1区2区3区| 日本欧美一区二区三区乱码| 91精品福利在线| 中文字幕一区二区在线播放| 国模无码大尺度一区二区三区| 制服丝袜中文字幕亚洲| 亚洲福中文字幕伊人影院| 色综合一个色综合亚洲| 国产精品久久午夜| 粉嫩aⅴ一区二区三区四区五区| 精品奇米国产一区二区三区| 日韩va欧美va亚洲va久久| 欧美日韩国产另类一区| 亚洲黄色av一区| 91婷婷韩国欧美一区二区| 国产片一区二区| 国产精品99久久久久久似苏梦涵| 日韩免费在线观看| 免费在线一区观看| 日韩欧美中文一区| 麻豆专区一区二区三区四区五区| 91精品国产综合久久久蜜臀粉嫩 | 欧美激情资源网| 国产99精品视频| 国产情人综合久久777777| 国产精品一二三四区| 国产午夜精品在线观看| 国产成人欧美日韩在线电影| 久久久www成人免费无遮挡大片| 国产在线播放一区二区三区| 久久亚洲私人国产精品va媚药| 国产美女一区二区| 国产日韩亚洲欧美综合| 成人午夜免费av| 中文字幕一区在线| 91福利社在线观看| 亚洲国产日韩一区二区| 欧美日韩高清在线播放| 卡一卡二国产精品 | 综合欧美一区二区三区| 91官网在线免费观看| 亚洲一二三四在线| 91精品国产乱| 国产在线一区二区| 欧美激情一区二区三区| 色先锋久久av资源部| 午夜av区久久| 日韩精品中午字幕| 国产精品99久久久久久有的能看 | 奇米精品一区二区三区四区| 精品少妇一区二区三区| 国产精品一区在线观看乱码| 亚洲欧美在线高清| 欧美体内she精高潮| 免费在线看成人av| 欧美激情一区二区| 91成人免费在线| 美腿丝袜亚洲色图| 国产欧美一区二区精品忘忧草| 成人动漫一区二区| 亚洲大型综合色站| 精品国产一区二区在线观看| 丁香婷婷综合网| 亚洲va欧美va国产va天堂影院| 欧美一区二区精美| 成人免费观看视频| 日韩精品电影一区亚洲| 久久免费午夜影院| 91国内精品野花午夜精品| 久久精品理论片| 亚洲三级在线看| 精品欧美久久久| 91免费看视频| 丝袜亚洲精品中文字幕一区| 久久久不卡网国产精品一区| 欧美在线三级电影| 国产精品一色哟哟哟| 亚洲成年人网站在线观看| 久久精品一区二区| 欧美日韩日日摸| 成人手机在线视频| 日本成人在线网站| 亚洲色图视频网| 日韩精品一区二区三区视频在线观看| 99re在线视频这里只有精品| 美女性感视频久久| 一区二区三区四区av| 久久久美女毛片| 4438x成人网最大色成网站| 国产91清纯白嫩初高中在线观看| 午夜精品一区二区三区电影天堂 | 久久婷婷一区二区三区| 欧美丝袜第三区| 国产成人精品1024| 日韩精品五月天| 亚洲男女毛片无遮挡| 久久久久久久久99精品| 欧美人牲a欧美精品| 91香蕉视频mp4| 国产一区二区三区香蕉| 日韩在线播放一区二区| 亚洲黄色小说网站| 欧美国产丝袜视频| 精品久久久久久综合日本欧美| 欧美视频自拍偷拍| 99久久伊人精品| 国产99久久久国产精品潘金| 久久av老司机精品网站导航| 亚洲中国最大av网站| |精品福利一区二区三区| 精品国产91洋老外米糕| 7777女厕盗摄久久久| 色欧美片视频在线观看| 99久久精品国产导航| 国产精品一线二线三线精华| 久久 天天综合| 免费观看在线综合| 亚洲18色成人| 亚洲国产精品一区二区久久恐怖片 | 波多野结衣中文字幕一区二区三区| 蜜乳av一区二区三区| 日韩成人免费电影| 免费观看成人av| 日本不卡1234视频| 免费欧美高清视频| 蜜臀a∨国产成人精品|