资源描述:
《基于Dragon Board 410c开发板的按键和轨迹球驱动实现代码.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于DragonBoard410c开发板的按键和轨迹球驱动实现代码 在上一篇博客《基于DragonBoard410c开发板的触摸屏驱动编写》中,我已经描述了触摸屏驱动编写过程,以及其架构,这篇博客我会跟大家讲述一下按键和轨迹球驱动。一、按键和轨迹球驱动 MSM具有按键和轨迹球的功能,对应的驱动程序在文件arch/arm/mach-msm/board-mahimahi-keypad.c中,接下来开始介绍此文件的实现流程。 (1)文件board-mahimahi-keypad.c中的全局定义代码如下所示: staTIcstructgpio_event_info*mahi
2、mahi_input_info[]={&mahimahi_keypad_matrix_info.info,//键盘矩阵&mahimahi_keypad_key_info.info, //键盘信息&jogball_x_axis.info.info, //轨迹球X方向信息&jogball_y_axis.info.info, //轨迹球Y方向信息};staTIcstructgpio_event_platform_datamahimahi_input_data={.names={ ”mahimahi-keypad”, //按键设备 ”mahimahi-nav”, //
3、轨迹球设备 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类型的数组。 “
4、mahimahi-keypad”和“mahimahi-nav”分别是两个设备的名称。 gpio_event_info指针各式的数组mahimahi_input_info中包含了mahimahi_keypad_matrix_info.info,mahimahi_keypad_key_info.info,jogball_x_axis.info.info和jogball_y_axis.info.info。 按键驱动是一个利用GPIO矩阵的驱动,由gpio_event_matrix_info矩阵定义,定义还需要包含按键的GPIO矩阵和input设备的信息,内容如下所示: st
5、aTIcunsignedintmahimahi_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_k
6、eymap[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,.ou
7、tput_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
8、 GPIOK