CANコントローラーを起動するには、LinuxカーネルにメモリとIRQリソースを提供する必要があります。それらを取得する方法がわかりません。
以下は、入力する必要のある構造です。たとえば、これはランタイムクロック用ですが、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()を介して「ボードドライバー」からリソースとともに追加されます。問題は、CANチップではなく、ボード上のすべてのデバイス(UART、RTC、I2C、NANDなど)を初期化することです。デバイスが追加された後、この情報をデバイスドライバーに渡すことができます。CANチップドライバ自体はカーネルコードに存在します。