基于Dragon Board 410c開發(fā)板的按鍵和軌跡球驅(qū)動實現(xiàn)代碼_第1頁
基于Dragon Board 410c開發(fā)板的按鍵和軌跡球驅(qū)動實現(xiàn)代碼_第2頁
基于Dragon Board 410c開發(fā)板的按鍵和軌跡球驅(qū)動實現(xiàn)代碼_第3頁
基于Dragon Board 410c開發(fā)板的按鍵和軌跡球驅(qū)動實現(xiàn)代碼_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

基于DragonBoard410c開發(fā)板的按鍵和軌跡球驅(qū)動實現(xiàn)代碼前言:在上一篇博客《基于DragonBoard410c開發(fā)板的觸摸屏驅(qū)動編寫》中,我已經(jīng)描述了觸摸屏驅(qū)動編寫過程,以及其架構(gòu),這篇博客我會跟大家講述一下按鍵和軌跡球驅(qū)動。一、按鍵和軌跡球驅(qū)動MSM具有按鍵和軌跡球的功能,對應(yīng)的驅(qū)動程序在文件arch/arm/mach-msm/board-mahimahi-keypad.c中,接下來開始介紹此文件的實現(xiàn)流程。(1)文件board-mahimahi-keypad.c中的全局定義代碼如下所示:staticstructgpio_event_info*mahimahi_input_info[]={

&mahimahi_keypad_matrix_,

//鍵盤矩陣

&mahimahi_keypad_key_,

//鍵盤信息

&jogball_x_,

//軌跡球X方向信息

&jogball_y_,

//軌跡球Y方向信息

};

staticstructgpio_event_platform_datamahimahi_input_data={

.names={

"mahimahi-keypad",

//按鍵設(shè)備

"mahimahi-nav",

//軌跡球設(shè)備

NULL,

},

.info=mahimahi_input_info,

.info_count=ARRAY_SIZE(mahimahi_input_info),

.power=jogball_power,

};

staticstructplatform_devicemahimahi_input_device={

.name=GPIO_EVENT_DEV_NAME,

.id=0,

.dev={

.platform_data=&mahimahi_input_data,

},

};

按鍵和軌跡球是通過GPIO系統(tǒng)來實現(xiàn)的,因此定義了gpio_event_info類型的數(shù)組?!癿ahimahi-keypad”和“mahimahi-nav”分別是兩個設(shè)備的名稱。gpio_event_info指針各式的數(shù)組mahimahi_input_info中包含了mahimahi_keypad_matrix_,mahimahi_keypad_key_,jogball_x_和jogball_y_。按鍵驅(qū)動是一個利用GPIO矩陣的驅(qū)動,由gpio_event_matrix_info矩陣定義,定義還需要包含按鍵的GPIO矩陣和input設(shè)備的信息,內(nèi)容如下所示:staticunsignedintmahimahi_col_gpios[]={33,32,31};staticunsignedintmahimahi_row_gpios[]={42,41,40};#defineKEYMAP_INDEX(col,row)

((col)*ARRAY_

SIZE(mahimahi_row_gpios)+(row))

#defineKEYMAP_SIZE

(ARRAY_SIZE(mahimahi_col_gpios)*\

ARRAY_SIZE(mahimahi_row_gpios))

staticconstunsignedshortmahimahi_keymap

[KEYMAP_SIZE]={

//按鍵映射關(guān)系

[KEYMAP_INDEX(0,0)]=KEY_VOLUMEUP,/*115*/

[KEYMAP_INDEX(0,1)]=KEY_VOLUMEDOWN,/*114*/

[KEYMAP_INDEX(1,1)]=MATRIX_KEY(1,BTN_MOUSE),

};

staticstructgpio_event_matrix_infomahimahi

_keypad_matrix_info={

.info.func=gpio_event_matrix_func,

//關(guān)鍵函數(shù)實現(xiàn)

.keymap=mahimahi_keymap,

.output_gpios=mahimahi_col_gpios,

.input_gpios=mahimahi_row_gpios,

.noutputs=ARRAY_SIZE(mahimahi_col_gpios),

.ninputs=ARRAY_SIZE(mahimahi_row_gpios),

.settle_time.tv.nsec=40*NSEC_PER_USEC,

.poll_time.tv.nsec=20*NSEC_PER_MSEC,

.flags=(GPIOKPF_LEVEL_TRIGGERED_IRQ|

GPIOKPF_REMOVE_PHANTOM_KEYS|

GPIOKPF_PRINT_UNMAPPED_KEYS),

};

staticstructgpio_event_direct_entrymahimahi_

keypad_key_map[]={//Power按鍵

{

.gpio

=MAHIMAHI_GPIO_POWER_KEY,

.code

=KEY_POWER,

},

};

staticstructgpio_event_input_infomahimahi_

keypad_key_info={

.info.func=gpio_event_input_func,

//關(guān)鍵函數(shù)實現(xiàn)

.info.no_suspend=true,

.flags=0,

.type=EV_KEY,

.keymap=mahimahi_keypad_key_map,

.keymap_size=ARRAY_SIZE(mahimahi_keypad_key_map)

};

keypad_key_matrix_info和keypad_info是gpio_event_matrix_info類型的結(jié)構(gòu)體,分別負責(zé)兩個和一個按鍵的處理,實際上,MSM平臺基本上只有三個按鍵:Power,音量增加按鍵和音量減少按鍵。音量增加和音量減少的掃描碼分別是KEY_VOLUMEUP(=115)和KEY_VOLUMEDOWN(=114)。提示:音量控制的兩個按鍵在全鍵盤的qwerty.kl有所定義,同時符合Linux的input設(shè)備和Android的按鍵標(biāo)準。軌跡球部分也是由GPIO實現(xiàn)的,由X方向和Y方向兩部分組成,內(nèi)容如下所示:staticuint32_tjogball_x_gpios[]={

MAHIMAHI_GPIO_BALL_LEFT,MAHIMAHI_GPIO_BALL_RIGHT,

};

staticuint32_tjogball_y_gpios[]={

MAHIMAHI_GPIO_BALL_UP,MAHIMAHI_GPIO_BALL_DOWN,

};

staticstructjog_axis_infojogball_x_axis={

//X軸的內(nèi)容

.info={

.info.func=gpio_event_axis_func,

//關(guān)鍵函數(shù)實現(xiàn)

.count=ARRAY_SIZE(jogball_x_gpios),

.dev=1,

.type=EV_REL,

.code=REL_X,

.decoded_size=1U<<ARRAY_SIZE(jogball_x_gpios),

.map=jogball_axis_map,

.gpio=jogball_x_gpios,

.flags=GPIOEAF_PRINT_UNKNOWN_DIRECTION,

}

};

staticstructjog_axis_infojogball_y_axis={

//Y軸的內(nèi)容

.info={

.info.func=gpio_event_axis_func,

//關(guān)鍵函數(shù)實現(xiàn)

.count=ARRAY_SIZE(jogball_y_gpios)

.dev=1,

.type=EV_REL,

.code=REL_Y,

.decoded_size=1U<<ARRAY_SIZE(jogball_y_gpios),

.map=jogball_axis_map,

溫馨提示

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

評論

0/150

提交評論