主机操作系统:Centos 6.7
交叉编译器版本:buildroot-2012.08
开发板平台: FL2440
Linux内核版本: linux-3.0
开发模块: linux内核自带按键驱动移植
1、修改arch/arm/mach-s3c2440/mach-smdk2440.c添加button驱动
添加头文件
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/input.h>
#if defined(CONFIG_KEYBOARD_GPIO)||defined(CONFIG_KEYBOARD_GPIO_MODULE)
static struct gpio_keys_button s3c2440_buttons[] = {
{
.gpio = S3C2410_GPF(0),
.code = KEY_F1,
.desc = "button 1",
.active_low = 0,
},
{
.gpio = S3C2410_GPF(2),
.code = KEY_F2,
.desc = "button 2",
.active_low = 0,
},
{
.gpio = S3C2410_GPF(3),
.code = KEY_F3,
.desc = "button 3",
.active_low = 0,
},
{
.gpio = S3C2410_GPF(4),
.code = KEY_F4,
.desc = "button 4",
.active_low = 0,
},
};
static struct gpio_keys_platform_data s3c2440_button_data = {
.buttons = s3c2440_buttons,
.nbuttons = ARRAY_SIZE(s3c2440_buttons),
};
static struct platform_device s3c2440_button_device = {
.name = "gpio-keys",
.id = -1,
.dev = {
.platform_data = &s3c2440_button_data,
}
};
#endif
修改结构体smdk2440_devices[],添加button的驱动
#if defined(CONFIG_KEYBOARD_GPIO)||defined(CONFIG_KEYBOARD_GPIO_MODULE)
static struct gpio_keys_button s3c2440_buttons[] = {
{
.gpio = S3C2410_GPF(0),
.code = KEY_F1,
.desc = "button 1",
.active_low = 0,
},
{
.gpio = S3C2410_GPF(2),
.code = KEY_F2,
.desc = "button 2",
.active_low = 0,
},
{
.gpio = S3C2410_GPF(3),
.code = KEY_F3,
.desc = "button 3",
.active_low = 0,
},
{
.gpio = S3C2410_GPF(4),
.code = KEY_F4,
.desc = "button 4",
.active_low = 0,
},
};
static struct gpio_keys_platform_data s3c2440_button_data = {
.buttons = s3c2440_buttons,
.nbuttons = ARRAY_SIZE(s3c2440_buttons),
};
static struct platform_device s3c2440_button_device = {
.name = "gpio-keys",
.id = -1,
.dev = {
.platform_data = &s3c2440_button_data,
}
};
#endif