微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于Dragon Board 410c开发板的按键和轨迹球驱动实现代码

基于Dragon Board 410c开发板的按键和轨迹球驱动实现代码

时间:02-21 来源:互联网 点击:

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方向两部分组成,内容如下所示:

static uint32_t jogball_x_gpios[] = {  
    MAHIMAHI_GPIO_BALL_LEFT, MAHIMAHI_GPIO_BALL_RIGHT,  
};  
static uint32_t jogball_y_gpios[] = {  
    MAHIMAHI_GPIO_BALL_UP, MAHIMAHI_GPIO_BALL_DOWN,  
};  
static struct jog_axis_info jogball_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,  
    }  
};  
static struct jog_axis_info jogball_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,  
        .gpio = jogball_y_gpios,  
        .flags = GPIOEAF_PRINT_UNKNOWN_DIRECTION,  
    }  
}; 

在上述代码中,这里的轨迹球是用jog_axis_info类型的结构体进行定义的,这种设备的类型(type)是相对设备EV_REL。

注意:除了默认的AVRCP.kl和qwerty.kl之外,在MSM8916平台中新增了文件h2w_headset.kl文件。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top