基于Dragon Board 410c开发板的按键和轨迹球驱动实现代码_第1页
基于Dragon Board 410c开发板的按键和轨迹球驱动实现代码_第2页
基于Dragon Board 410c开发板的按键和轨迹球驱动实现代码_第3页
基于Dragon Board 410c开发板的按键和轨迹球驱动实现代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于DragonBoard410c开发板的按键和轨迹球驱动实现代码前言:在上一篇博客《基于DragonBoard410c开发板的触摸屏驱动编写》中,我已经描述了触摸屏驱动编写过程,以及其架构,这篇博客我会跟大家讲述一下按键和轨迹球驱动。一、按键和轨迹球驱动MSM具有按键和轨迹球的功能,对应的驱动程序在文件arch/arm/mach-msm/board-mahimahi-keypad.c中,接下来开始介绍此文件的实现流程。(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",

//按键设备

"mahimahi-nav",

//轨迹球设备

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系统来实现的,因此定义了gpio_event_info类型的数组。“mahimahi-keypad”和“mahimahi-nav”分别是两个设备的名称。gpio_event_info指针各式的数组mahimahi_input_info中包含了mahimahi_keypad_matrix_,mahimahi_keypad_key_,jogball_x_和jogball_y_。按键驱动是一个利用GPIO矩阵的驱动,由gpio_event_matrix_info矩阵定义,定义还需要包含按键的GPIO矩阵和input设备的信息,内容如下所示: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]={

//按键映射关系

[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,

//关键函数实现

.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,

//关键函数实现

.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类型的结构体,分别负责两个和一个按键的处理,实际上,MSM平台基本上只有三个按键:Power,音量增加按键和音量减少按键。音量增加和音量减少的扫描码分别是KEY_VOLUMEUP(=115)和KEY_VOLUMEDOWN(=114)。提示:音量控制的两个按键在全键盘的qwerty.kl有所定义,同时符合Linux的input设备和Android的按键标准。轨迹球部分也是由GPIO实现的,由X方向和Y方向两部分组成,内容如下所示: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轴的内容

.info={

.info.func=gpio_event_axis_func,

//关键函数实现

.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轴的内容

.info={

.info.func=gpio_event_axis_func,

//关键函数实现

.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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论