



下載本文檔
版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年抗血小板藥項目建議書
- 2025年建筑防水卷材及制品項目建議書
- 企業(yè)臨時保安合同范本
- 合資合伙協(xié)議合同范本
- 醫(yī)院保安協(xié)議合同范本
- 合同范本 渠道疏浚
- 煤矸石燒結(jié)磚購銷合同范本
- 農(nóng)村錯車道工程合同范例
- 叉車變賣合同范本
- 幼兒園玩具設(shè)備采購合同范本
- 工程分包計劃(完整版)
- Q∕GDW 12068-2020 輸電線路通道智能監(jiān)拍裝置技術(shù)規(guī)范
- CIR操作指南(20110513)
- 領(lǐng)導(dǎo)力培訓(xùn)領(lǐng)導(dǎo)力提升培訓(xùn)領(lǐng)導(dǎo)力培訓(xùn)
- 制藥工程 專業(yè)英語 Unit 1(課堂PPT)
- 俞敏洪四級詞匯詞根聯(lián)想記憶法亂序wordlist
- 第四次工業(yè)革命ppt課件
- 公路工程試驗常規(guī)檢測項目、檢測標(biāo)準、檢測頻率、取樣方法(標(biāo)準版)
- 圖解調(diào)音臺使用說明(共14頁)
- 員工人事檔案登記表(最終版)
- 服裝測量方法及圖示
評論
0/150
提交評論