新手入门
- 积分
- 18
- 金钱
- 18
- 注册时间
- 2019-8-19
- 在线时间
- 4 小时
|
- static int keyio_init(void)
- {
- keydev.nd = of_find_node_by_path("/key");
- if (keydev.nd== NULL) {
- return -EINVAL;
- }
- keydev.key_gpio = of_get_named_gpio(keydev.nd ,"key-gpio", 0);
- if (keydev.key_gpio < 0) {
- printk("can't get key0\r\n");
- return -EINVAL;
- }
- printk("key_gpio=%d\r\n", keydev.key_gpio);
-
- /* 初始化key所使用的IO */
- gpio_request(keydev.key_gpio, "key0"); /* 请求IO */
- gpio_direction_input(keydev.key_gpio); /* 设置为输入 */
- return 0;
- }
复制代码 在keyio_init函数里调用了gpio_request,但是在卸载驱动的时候没有把gpio释放掉。如果加上判断if(gpio_request(keydev.key_gpio, "key0")<0){
printk("error!\r\n");
}
卸载再重新加载驱动,执行app就会报错。
在mykey_exit函数中加上gpio_free(keydev.key_gpio)就能解决问题。
|
|