android平臺gt818驅動移植說明書_第1頁
android平臺gt818驅動移植說明書_第2頁
android平臺gt818驅動移植說明書_第3頁
android平臺gt818驅動移植說明書_第4頁
android平臺gt818驅動移植說明書_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

S3C6410持多指,能夠在系統支持的情況下在主控進入關屏狀態時自動調整GT818工作狀態,達到省電的目的。硬件IOGuitar的數據中斷,通知系統運系統中斷號:119((18I2C創建驅動結構體,探測Guitar設備,并將其掛載到I2C總線驅動上;測試I2C通信, 本驅動采用GPL證,代碼沒有采用模塊方式,所以使用本驅動前需要重新編譯內核。在編譯內核前,2gcc及arm-linux-gccCCLDarm-linux-gcc;3、獲取平臺對應的Android源碼,解壓到自己的工作。#makexconfig(QT的圖形配置界面,非常直觀,推薦使用 config基于文本菜單的配置界面 將編寫的源代碼到Linux內核源代碼的相 #config##選擇項,選擇Y dependson ItisaandroiddrivertosupportGooidx'stouchscreenwhoseisguitarons3c6410tform.Thetouchscreencansupportmulti-touchnotmorethantwofingers.SayYheretoenablethedriverforthetouchscreenontheS3CSMDKboard.Ifunsure,sayN.Tocompilethisdriverasamodule,chooseMhere:themodulewillbecalledgoodix_touch.ko.# ,執行makexconfig,查看driver項中是否增加了GOODIX_TOUCHSCREEN條的關聯設置需要。以S3C開發板提供的電阻屏驅動為例:自帶電阻屏的驅動配置選項為TOUCHSCREEN_S3C或TOUCHSCREEN_S3C_ANDROID,而s3c_ts_set_tdata、s3c_device_ts是在arch/arm/t-s3c/dev-ts.c文件中定義的,而這個源文件必須在CONFIG_TOUCHSCREEN_S3C或者CONFIG_TOUCHSCREEN_S3C_ANDROID有定義的情況下才會被編譯,要支持多點觸摸,首先需要linux內核的支持,也就是input子系統需要提供多點觸摸的接口,其次是GUI庫要能處理多點觸摸的,后者在Android2.0及以上版本已經支持。內核方面,自2.6.30以后的內核的input子系統開始增加了多點觸摸的支持,而比這更早的版本我們可以通過修改input子系統源文件來在文件(內核源文件)/include/input.h#define #define #define #defineABS_MT_TOUCH_MAJOR0x30/*Majoraxisoftouchingellipse*/#defineABS_MT_TOUCH_MINOR0x31/*Minoraxis(omitifcircular)*/#defineABS_MT_WIDTH_MAJOR0x32/*Majoraxisofapproachingellipse*/#defineABS_MT_WIDTH_MINOR0x33/*Minoraxis(omitifcircular)*/#defineABS_MT_ORIENTATION0x34/*Ellipseorientation*/#defineABS_MT_POSITION_X0x35/*CenterXellipseposition*/#defineABS_MT_POSITION_Y0x36/*CenterYellipseposition*/#defineABS_MT_TOOL_TYPE0x37/*Typeoftouchingdevice*/#defineABS_MT_BLOB_ID0x38/*Groupasetofpacketsasablob*/#defineABS_MT_TRACKING_ID0x39/*UniqueIDofinitiatedcontact*/#defineABS_MT_PRESSURE0x3a/*Pressureoncontactarea*/#defineABS_MAX staticinlinevoidinput_mt_sync(structinput_dev{} staticunsigned 0staticunsignedlonginput_abs_bypass[BITS_TO_LONGS( staticvoidinput_handle_event(structinput_dev*dev,disposition=}dev->sync=0;}case{if(test_bit(code,input_abs_bypass))}value=static init{constunsignedintfor(p=input_abs_bypass_init_data;*p;p++)}static init{interr;err=其他版本的內核的input子系統文件可以根據http /kernel/上提供的文件更新比較來作如果采用的是New-style驅動探測方式,在掛載驅動前需要預先建立在主板的i2c_board_infostaticstructi2c_board_info initdata= }staticstructi2c_board_info initdata= },// 動中使用的i2c總線i2c_board_info數組上不存在與GT818相同地址的。另缺省從設備地址是0x5d,0x14Guitar106字節(紅色部分windows系統的GuitarTesttform工具自動產生,細內容可參閱Guitar的用戶手冊。下面以4.3inch屏為例:staticintgoodix_init_panel(structgoodix_ts_data{shortret=-1;uint8_tconfig_info_c[]={ uint8_tconfig_info_d[]= //Touchkeydevlopif(ret<0)return{}{}

cfg_data=config_info_c;cfg_data=config_info_d;ts->abs_x_max=(cfg_data[62]<<8)+ts->abs_y_max=(cfg_data[64]<<8)+if(ret<return0;}GuitarI2C傳輸有最大速率限制(Guitar主控編程說明,建議不350K保證小于一定閾值,請注意i2c工作電壓和Guitar的工作電壓;為了便于移植調試,這里可以采用編譯控制宏的方式來方便地控制GPIO的使用:Touch芯片的分辨率(注意,配置信息中也要相應配置)與屏的像素。頭文件中的義為5代表5指,本最大支持5指;按鍵的設置,如果使用的是讀鍵值方式則只需打開頭文件中的宏HAVE_TOUCH_KEY,而選擇通過讀坐標來判斷按鍵(根據客戶不同的需求要結合TP結構重新配配置參數),則還需開宏COOR_TO_KEY,KEY_X、KEY_Y分別為按鍵的長跟寬的一半,key_center[MAX_KEY_NUM][2]={的位置是否在按鍵區內,然后上報則需最多支持4個按鍵;大分辨率去減,即如果X軸反了,則可以 模塊支持上電自動檢測版本并升級版本方式。GOODIX提供的驅動參考代碼默認自帶固件升級模塊,并依賴于AUTO_UPDATE_GT818與CONFIG_TOUCHSCREEN_GOODIX_IAP宏編譯開關和升級數據gt818_update.h(3824byteIC無法正常工作)#define#defineret=gt818_downloader(ts,goodix_gt818_firmware,update_path);if(ret<0){ ->dev,"Warnning:GT818updatemightbe}#ifdefgoodix_proc_entry=create_proc_entry("goodix-update",0666,NULL);if(goodix_proc_entry==NULL){ ->dev,"Couldn'tcreateprocentry!\n");ret=-ENOMEM;goto}{ ->dev,"Createprocentry }取所需的數據存到goodix_gt818_firmware數組中,然后調用ret=gt818_downloader(ts,goodix_gt818_firmware,升級過程中會使用到中斷腳與復位腳,具體動作請參考818編程指南,請在升級完后保證中斷口為輸且安裝GOODIX提供的Android固件升級程序GOODiX升級程序.apk,程序運行后的界面如下圖所示進入相應文件夾選擇用于升級的*.binGOODIX提10s后自動進 #define#define#define #define enumCHIP_TYPE{ GT800= #define 令。所以驅動中的寫節點(goodix_update_write())要添加相應的分支,并注意將ts->read_mode賦MODE_RD_CHIP_TYPE。時注意要將ts->read_mode賦為MODE_RD_CFG。ts->read_mode賦為MODE_RD_DIF。將ts->read_mode賦為MODE_RD_RAW。caseAPK_READ_FUN: if(cmd[1]==CMD_READ_VER){ts->read_mode=MODE_RD_VER;}elseif(cmd[1]== ts->read_mode= elseif(cmd[1]== ts->read_mode= elseif(cmd[1]== ts->read_mode= elseif(cmd[1]== ts->read_mode= 2)數據的elseif(ts->read_mode== page[0]= return elseif(ts->read_mode=={read_data[0]=read_data[1]= //cfgstartprintk("readconfigaddris:%x,%x\n",len= ret ret=i2c_read_bytes(ts-,read_data, if(ret<=0){printk(KERN_INFO"Readconfiginfofailed!\n");return0;}returnlen;}差值/原始值,需要標識符控制。對標識符的操作方法是,初始化為DATA_NON_ACTIVE狀狀態,完數據后,將其置為DATA_NON_ACTIVE狀態。更換狀態后,如果原始值,則從0x0880和0x09c0兩處分別160個字節的數據,如果差值,則從0xd80和0xe20兩處分別160個字節,完數據后,再往0x711寫1,然后再將標識符置為DATA_NON_ACTIVE狀態。#ifdefelseif(ts->read_mode==MODE_RD_RAW||ts->read_mode=={intretry=if(data_ready!={data_ready=}

//往0x711寫1 read_data[1]= read_data[2]= ret ret=i2c_write_bytes(ts-,read_data, if(ret<={printk("Writereadrawdataordiffcmderror!\n");return0;}read_times=while(DATA_READY!={if(read_times++>{if(retry++>{printk("Readrawdataordifftimeout!\n");returnTIMEOUT;}goto}}if(ts->read_mode=={read_data[0]= read_data[1]= //rawdata}elseif(ts->read_mode=={read_data[0]= read_data[1]=}len=retret=i2c_read_bytes(ts- ,read_data,if(ret<={printk(KERN_INFO"Readrawdatafailed!\n");return0;}if(ts->read_mode=={read_data[0]= read_data[1]=}elseif(ts->read_mode=={read_data[0]= read_data[1]=}retret=i2c_read_bytes(ts-,read_data,if(re

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論