[Armadillo:00465] Re: [PATCH] カーネル2.6用Armadillo-9パッチ
Takeharu KATO
email@hidden
2005年 8月 24日 (水) 02:40:26 JST
加藤です。
> こちらの実装で疑問に思う点やリクエストなどありましたら、
> どんどんぶつけてください。
> 今後ともよろしくお願いします。
>
ざっとパッチを見た限りで気づいた点を報告しておきます。
まだうごかしてはいません。あくまで見たままで言っているだけです。
まちがっていたら、すみません。
1) 初期化(メモリ回り)
arch/arm/mach-ep93xx/mach-armadillo9.c
下記設定だと、32Mしかメモリを認識しないように思います。
+MACHINE_START(ARMADILLO9, "Armadillo-9")
+ MAINTAINER("Atmark Techno, Inc.")
+ BOOT_MEM(SDRAM_START, 0x80000000, 0xe0000000)
+ /* understand this... */
+ BOOT_PARAMS(SDRAM_START + 0x00000100)
+ MAPIO(armadillo9_map_io)
+ INITIRQ(ep93xx_init_irq)
+ .timer = &ep93xx_timer, INIT_MACHINE(armadillo9_init)
+MACHINE_END
2.6系カーネルだと、FIXUPマクロで、メモリを再設定しないといけないのでは無いでしょうか?
私の記憶がたしかなら、ARMの場合、BOOT_MEMで指定したメモリリージョンは、
私のコードで言うと次の部分になります。
--
301 MACHINE_START(ARMADILLO9, "Armadillo9")
302 MAINTAINER("Takeharu KATO(Original Kernel 2.4.XAtmark Techno, Inc.)")
303 BOOT_MEM(PHYS_OFFSET, 0x80000000, 0xff000000)
304 FIXUP(fixup_armadillo9) <==この部分
--
fixup_armadillo9は、以下のような感じになります。
--
static void __init
fixup_armadillo9(struct machine_desc *desc, struct tag *tags,
char **cmdline, struct meminfo *mi)
{
/*
* This board has 32Mx2 blocks
*/
mi->bank[0].start = MACH_ARMADILLO9_MEM_BANK0_START;
mi->bank[0].size = SZ_32M;
mi->bank[0].node = 0;
mi->bank[1].start = MACH_ARMADILLO9_MEM_BANK1_START;
mi->bank[1].size = SZ_32M;
mi->bank[1].node = 1;
mi->nr_banks = 2;
}
--
私は、以前この部分で、はまりました(それとも何か別の手を使って64Mを認識させているのでしょうか?)。
#「ああ、32Mしか認識してない」と気が付いたのはリリースした当日でした。
ざっとしか見てませんが、同じ問題が起こるのではないでしょうか?
あと、同じファイルの
--
+static struct map_desc armadillo9_io_desc[] __initdata = {
+ {IO_ADDRESS(EP93XX_AHB_BASE), EP93XX_AHB_BASE, SZ_1M, MT_DEVICE},
+ {IO_ADDRESS(EP93XX_APB_BASE), EP93XX_APB_BASE, SZ_8M, MT_DEVICE},
+ {PCMCIA_BASE_VIRT, PCMCIA_BASE_PHYS, PCMCIA_SIZE, MT_DEVICE},
+};
--
ですが、ベースとしているep93xx Unofficial 2.6パッチは最近、
IO_ADDRESSマクロの使用を取り止める方向になっていたと思います。
また、
{PCMCIA_BASE_VIRT, PCMCIA_BASE_PHYS, PCMCIA_SIZE, MT_DEVICE},
って何のためにマップしているのでしょうか?
これって本当に必要なのでしょうか?
私のパッチでは、不要だと思ってあっさり削除しました。
もしよろしければ、上記マップの理由を教えて下さい。
#ずっと、疑問だったもので…
ドライバ関連
1) i2c/mtd関連ドライバのファイル名
非本質的な話ですが、チップドライバの場合, i2c-XXXX.cよりXXXX.cという名前にしたほうが
良いように思います(他がそうなっているので)。
mtd-armadillo9.cについても同じです。
#私の手許のパッチは、他に習ってそのようにしています。
#なお、以前送ったものは、全部buses配下にi2cチップドライバを
#配置したままになっていて、後から気がついて、
#ちょっと、ちょっとはずかしい思いをしました…
mtd関連で言うと、私も後で気が付いたのですが、
march-armadillo9.c
のarmadillo9_initで、
physmap_configure(0x60000000, 0x00800000, 2, NULL);
platform_device_register(&cfi_flash_device);
という処理がありますが、これって必要ですか?
drivers/mtd/maps配下にマッピングドライバを作成しているなら
特に必要ないように思いますが…
後になって、同じフラッシュを2つの経路からアクセスできてしまうので
いまいちかなと思っていました。
#コンフィグレーションで外せますが…
以上、参考になれば、幸いに思います。
armadillo メーリングリストの案内