当前位置: 技术问答>linux和unix
求问 驱动的 resource 结构体
来源: 互联网 发布时间:2017-01-18
本文导语: struct resource { resource_size_t start; resource_size_t end; unsigned long flags; const char *name; }; 有一个设备的定义: static struct resource switch_gpio_resource[] = { [0] = { .start = IRQ_EINT6, .end = IRQ_EINT6, .flags = IORESOURCE_IRQ,...
struct resource {
resource_size_t start;
resource_size_t end;
unsigned long flags;
const char *name;
};
有一个设备的定义:
static struct resource switch_gpio_resource[] = {
[0] = {
.start = IRQ_EINT6,
.end = IRQ_EINT6,
.flags = IORESOURCE_IRQ,
},
};
这里的start 和 end是表示什么地址? 从switch_gpio_resource的start 和end的命名看起来 怎么回事中断脚?
谢谢
resource_size_t start;
resource_size_t end;
unsigned long flags;
const char *name;
};
有一个设备的定义:
static struct resource switch_gpio_resource[] = {
[0] = {
.start = IRQ_EINT6,
.end = IRQ_EINT6,
.flags = IORESOURCE_IRQ,
},
};
这里的start 和 end是表示什么地址? 从switch_gpio_resource的start 和end的命名看起来 怎么回事中断脚?
谢谢
|
先要知道 bus-device-driver 的模型再看就容易了
platform_get_irq --> platform_get_resource ,
就是从属于device的resource里找flags = IORESOURCE_IRQ 的resource 的start
多跟几步就明朗了
platform_get_irq --> platform_get_resource ,
就是从属于device的resource里找flags = IORESOURCE_IRQ 的resource 的start
多跟几步就明朗了
|
那就是中断
中断也是一种资源,也用struct resource描述
中断也是一种资源,也用struct resource描述
|
当flags为IORESOURCE_IRQ时,start,end代表platform_device使用的中断号的开始值和结束值。
现在,只有一个中断号,所以start=end=中断号.
现在,只有一个中断号,所以start=end=中断号.
|
IORESOURCE_IRQ 就是中断号
如果是 IORESOURCE_MEM 就是内存起始 地址 都是资源的一种而已
如果是 IORESOURCE_MEM 就是内存起始 地址 都是资源的一种而已
|
楼上说的都+1。这种结构定义方式,多见几次就熟悉了。