我需要为 Linux 内核提供内存和 IRQ 资源以启动 CAN 控制器。不知道如何获得它们。
下面是我需要填写的结构。我以这个结构为例,这是用于运行时时钟的,但我需要用于 CAN 控制器。两者都在同一块板上,RT 时钟(和所有其他设备)有常量,但我的 CAN 芯片没有。查看主题芯片驱动程序的代码(sp_probe() 函数)时,我发现它需要相同类型的资源。
struct resource tegra_rtc_resources[] = {
[0] = {
.start = ???,
.end = ???,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = ???,
.end = ???,
.flags = IORESOURCE_IRQ,
},
};
所有“平台”设备都通过系统函数 platform_add_devices() 从“板驱动程序”添加资源。问题是它初始化了我板上的所有设备(UART、RTC、I2C、NAND 等),而不是 CAN 芯片。添加设备后,可以将此信息传递给设备驱动程序。CAN 芯片驱动程序本身存在于内核代码中。