2

我需要为 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 芯片驱动程序本身存在于内核代码中。

4

0 回答 0