关于mini2440按键驱动
小弟最近在学习驱动,在做到按键驱动设计的时候,发现设备使用的是平台类型注册的,但是在平台类型驱动的prob函数里面又注册了混杂设备。着实不解:怎么又是平台又是混杂的?
//下面这段代码是在设备程序里面的
static struct platform_device *s3c_buttons;
static int __init platform_init(void)
{
s3c_buttons = platform_device_alloc("mini2440-buttons",-1);
platform_device_add_resources(s3c_buttons,&s3c_buttons_resource,7);
/*平台设备的注册*/
platform_device_add(s3c_buttons);
}
//下面这段代码是在驱动里面的
/*get irq number*/
for(i=0; i<6; i++){
buttons_irq = platform_get_resource(pdev,IORESOURCE_IRQ,i);
if(buttons_irq == NULL){
dev_err(dev,"no irq resource specified\n");
ret = -ENOENT;
goto err_map;
}
button_irqs[i] = buttons_irq->start;
//printk("button_irqs[%d]=%d\n",i,button_irqs[i]);
}
ret = misc_register(&mini2440_miscdev);//为啥还要混杂设备注册?
return 0;
err_map:
iounmap(buttons_base);
err_req:
release_resource(buttons_mem);
kfree(buttons_mem);
return ret;
//下面这段代码是在设备程序里面的
static struct platform_device *s3c_buttons;
static int __init platform_init(void)
{
s3c_buttons = platform_device_alloc("mini2440-buttons",-1);
platform_device_add_resources(s3c_buttons,&s3c_buttons_resource,7);
/*平台设备的注册*/
platform_device_add(s3c_buttons);
}
//下面这段代码是在驱动里面的
/*get irq number*/
for(i=0; i<6; i++){
buttons_irq = platform_get_resource(pdev,IORESOURCE_IRQ,i);
if(buttons_irq == NULL){
dev_err(dev,"no irq resource specified\n");
ret = -ENOENT;
goto err_map;
}
button_irqs[i] = buttons_irq->start;
//printk("button_irqs[%d]=%d\n",i,button_irqs[i]);
}
ret = misc_register(&mini2440_miscdev);//为啥还要混杂设备注册?
return 0;
err_map:
iounmap(buttons_base);
err_req:
release_resource(buttons_mem);
kfree(buttons_mem);
return ret;
...全文
相关推荐
mini2440按键驱动
### 嵌入式Linux之mini2440按键驱动详解#### 一、概述在嵌入式系统中,按键驱动程序是非常基础且重要的组成部分之一。
详细的MINI2440按键驱动详解
### 详细的MINI2440按键驱动详解#### 概述本篇文章将深入探讨MINI2440开发板上的按键驱动实现细节。
mini2440按键驱动实验--4个按键分别控制4个LED灯
在这个“mini2440按键驱动实验”中,我们将深入理解如何利用四个按键来控制四个LED灯,这涉及到Linux驱动程序的编写以及硬件中断处理。
mini2440 arm9 裸机 按键驱动
本文将详细讲解如何在Mini2440上实现一个简单的按键驱动程序,这对于初学者理解裸机编程是非常有帮助的。
mini2440驱动例程-中断按键检测
在这个“mini2440驱动例程-中断按键检测”示例中,我们主要关注的是如何利用中断机制来实现对硬件按键的实时检测。



