私は、CPUの内部レジスタとを使用してウォッチドッグ用のLinuxカーネルドライバを作成しています(ウォッチドッグリセットの場合にデバッグ情報を格納する専用の永続RAM)。デバイスツリーを使用して1つのLinuxカーネルドライバで2つのデバイスのリソースをマップする方法はありますか?
私のボードファイルには、内部レジスタ(内部レジスタのベースアドレス+オフセット)とRAM(絶対メモリアドレス)の2種類のリソースがありました。ボードファイルにはIORESOURCE_MEM
という2種類のリソースがありました。
platform_get_resource()
で適切なインデックスを使用してアクセスできます。
デバイスツリーを備えた新しい世界では、ウォッチドッグ用のノードは内部CPUレジスタのドメインにあり、問題なくアクセスできます。
しかし、RAMに自分のメモリの場所を追加するにはどうすればよいですか? RAMのベースアドレスはCPU内部レジスタとは異なりますので、単に "reg"エントリに別の範囲を追加することはできません(reg = <0x20300 0x408>, <0x3BFFE000 0x1000>;
など)。このような新しい「デバイス」を追加する必要はありますか?
PRAM {
#address-cells = <1>;
#size-cells = <1>;
PRAM0: Watchdog_Crash_Debug_Context {
reg = <0x3BFFE000 0x1000>;
};
};
しかし、どのように私は、ウォッチドッグデバイスドライバで参照できますか?または、ウォッチドッグデバイスのツリーエントリにありますか?
Linuxバージョンは4.1.18です。
ハードウェアウォッチドッグのハードウェア? – jgr208
ハードウェアウォッチドッグ(Marvell Armada XP上) –